Question

J'ai la configuration des tests suivants.

[TestClass,
Isolated]
public class TestClass
{
    public TestClass()
    {
    }

    private TestContext testContextInstance;
    public TestContext TestContext
    {
        get { return testContextInstance; }
        set { testContextInstance = value; }
    }

    [ClassInitialize,
    Isolated]
    public static void InitializeRunState(TestContext testContext)
    {
        Helpers.SetupMocks();
        //do some class init stuff
    }

    [TestInitialize]
    public void InitializeTestState()
    {
        Helpers.SetupMocks();
    }

    [TestMethod]
    public void Test()
    {
        //execute test
    }
}

Dans la méthode Helpers.SetupMocks () , j'appelle . Isolator.Swap.AllInstances < T > () .

Cela fonctionne très bien tant que je n'exécute pas de test de charge. Dès que je configure un test de charge qui exécutera la méthode Test , TypeMock commence à générer cette exception:

  

TypeMock.TypeMockException: *** Impossible d'appeler Swap.AllInstances () plusieurs fois sur un type.

Y a-t-il un moyen d'éviter cela? Ai-je un problème de configuration?

Était-ce utile?

La solution

Disclaimer Je travaille chez Typemock

Notez tout d'abord que nous lançons cette exception car il ne sert à rien de simuler plus d'une fois toutes les occurrences d'un type et nous souhaitons informer l'utilisateur qu'il a probablement commis une erreur.
Je pense que le problème est que lorsque vous exécutez les tests de charge, mstest exécute quelques instances de la classe de test en parallèle.
Dans ce cas, vous devez déplacer l'appel vers Isolator.Swap.AllInstances () de la configuration de la classe vers les méthodes de test.
Cela peut fonctionner si les exécutions de mstest n'exécutent pas les tests en parallèle dans la même classe. Malheureusement, il semble que mstest ne dispose pas d'argument de ligne de commande pour redéfinir ce comportement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top