J'ai récemment embarqué sur le train Moles Pex & afin de tester une logique avec de nombreux éléments qui sont statiques, non-virtuels, scellés, etc. Récemment, j'ai commencé à voir un comportement que je ne peux pas expliquer les tests.Pourquoi un assertif sur un test unitaire avec HostType ("Moles") passe-t-il lorsqu'il est exécuté individuellement, mais échoue lorsqu'il est exécuté avec un groupe de tests?
Un couple de méthodes pour une interface que j'ai extensible renvoyer void, donc j'ai défini les stubs aux délégués qui mettent à jour les variables booléennes pour indiquer qu'ils ont été appelés. Voici ce que je fais:
[TestMethod]
[HostType("Moles")]
public void UnitTestX()
{
bool disposeCalled = false;
bool getCalled = false;
ClassX classX = new ClassX();
var data = new SIClassXData
{
Dispose =() => disposeCalled = true,
Get =() => getCalled = true,
ClassXGet =() => classX
};
MDataLayerFactory.CreateDataLayerObject(() => (IClassXData)data);
Assert.IsTrue(disposeCalled);
Assert.IsTrue(getCalled);
}
Pour une raison quelconque, l'affirme réussir ci-dessus si je lance ce test seul. Mais si j'exécute le test avec tous les autres tests de l'assembly (en utilisant la fonctionnalité "Exécuter tous les tests dans la solution" de Visual Studio), la première assertion échoue. Je voudrais savoir pourquoi cela se produit et ce que j'ai besoin de changer pour résoudre le problème.
DataLayerFactory est un service statefull? Dans ce cas, le scénario de test peut orienter le système vers un état où il échoue, mais il n'échoue pas isolément. – Peli
@Peli DataLayerFactory est une classe statique ne contenant rien qui puisse contenir l'état. –
FYI - en général, nous ne suivons pas activement les questions/réponses de stackoverflow sur Pex/Moles (peut-être devrions-nous mais nous ne le faisons pas pour le moment) – Peli