2009-10-14 2 views
1

J'ai écrit quelques cas de test Objective-C. Un typique regarde les éléments suivants:Les objets présentant des fuites sont-ils considérés comme OK dans les scénarios de test?

- (void) test_size_Equals_Excpectation_After_initWithSize 
{ 
    int size = 10; 
    Buffer* buff = [[Buffer alloc] initWithSize:size]; 

    GHAssertEquals([buff size], size, nil); 
} 

tampon retourne alloc tampon avec comptage de référence 1, je ne l'ai pas soin d'appeler autorelease sur le tampon, il fuit après la sortie de funciton. Est-ce acceptable dans les scénarios de test?

Répondre

6

Cela ne semble pas être une bonne idée.

Votre code de test doit être écrit ainsi que le code de l'application.

Tout est code. Qui peut dire qu'une fuite n'a pas d'effets négatifs sur le reste de vos tests, ce qui fait que certains échecs sont rapportés comme des succès ou vice versa?

+1

D'accord. Le code de test ne sera pas persistant (ce qui signifie que les fuites disparaîtront à la sortie). D'un autre côté, vous modifiez le contexte dans lequel les tests se déroulent de manière subtile. Une fois que vos tests deviennent plus complexes (en utilisant peut-être une partie de votre code d'installation dans les maquettes), les choses deviennent risquées. Lâchez le tampon comme vous le feriez normalement et évitez les mauvaises habitudes. – Godeke

+0

La plupart des frameworks de test ont des méthodes de configuration/démontage qui peuvent vous aider à gérer la mémoire, selon votre situation. – nall

Questions connexes