J'ai une classe statique que j'utilise pour conserver mes données de test. Lorsque je le réfère dans mes tests de Nunit, les modifications que je fais sont persistées à travers des tests.
Par exemple, j'ai ce code dans mon test: p> et des données d'échantillon est quelque chose comme ceci: p> La première fois que je l'exécute, commanddo a 0 commande de commande. La deuxième fois qu'il a 1, puis 2, etc. Je pensais entre les tests de Nunit, rien n'était persisté. Est-ce que cela met en cache des propriétés statiques? P> p>
3 Réponses :
Je pense avoir répondu à ma propre question avec un peu plus de violation. Je ne sais toujours pas pourquoi il mettait à jour l'objet, mais si je modifie la classe statique à cela, cela fonctionne:
public static class SampleData {
public static OrderDto OrderDto {
get { return new OrderDto { LastName = "Smith", CreatedById = 5, CreatedByDisplayName = "Smith2" }; }
}
}
Il metchait à jour l'objet statique car il y avait une instance et c'est ce que vos tests ont fait. Les tests d'unités sont comme un code normal; S'ils mettent à jour un champ statique, le champ est mis à jour. Maintenant, vous retournez une nouvelle instance chaque fois que cette méthode est appelée, ce qui signifie que les modifications n'affectent que l'instance actuelle.
tests Nunit exécutera une méthode du testFixture étiquetée avec [Configuration] code> avant chaque test et [dérappé] code> par la suite. Vous pouvez utiliser ceci et l'autre Attributs de Nunit à configurer votre appareil. P>
Il appartient à La plupart des cadres de test d'unité fournissent un moyen d'initialiser et de nettoyer votre état avant et après le test . In Nunit, la manière de le faire est d'avoir une méthode avec Le moyen le plus simple d'atteindre ce que je pense que vous voulez obtenir est d'initialiser un champ membre dans [configuration] code> attribut. Cette méthode est exécutée avant chaque test. P> testsetup code> et d'utiliser cela entre différents tests. Notez que nous n'utilisons pas un membre statique ici, ce qui signifie que nous n'avons pas à le nettoyer après le test. P> [TestFixture]
public class MyTests {
OrderDto OrderDto;
OrderDetailDto;
[SetUp]
public void Setup() {
_OrderDto = new OrderDto { LastName = "Smith", CreatedById = 5, CreatedByDisplayName = "Smith2" };
_OrderDetailDto = new OrderDetailDto {/*Sample data*/};
}
[Test]
public void TestOrderDetailIsAddedToOrder() {
orderDto.OrderDetails.Add(_OrderDetailDto);
}
}