Исключение при выполнении всех модульных тестов одновременно - PullRequest
1 голос
/ 02 ноября 2011

У меня есть куча юнит-тестов в классе юнит-тестов.

Когда я запускаю каждый из них по отдельности, они все проходят, но когда я запускаю их все одновременно, первый проходит, а остальныеошибка:

System.ArgumentException: элемент с тем же ключом уже добавлен

Может кто-нибудь сказать мне, почему?И как мне исправить ошибку?

Пример:

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

    #region Additional test attributes
    #endregion

    /// <summary>
    ///A test for SplitTdsName
    ///</summary>
    [TestMethod()]
    public void SplitTdsNameTest_SimpleValidName1()
    {            
        string tdsName = "Mr Daniel Trunley";
        MemberName expected = new MemberName("Mr", "Daniel", "Trunley");
        MemberName actual;
        actual = TdsTransformer.SplitTdsName(tdsName);
        Assert.AreEqual(expected, actual);            
    }

    /// <summary>
    ///A test for SplitTdsName
    ///</summary>
    [TestMethod()]
    public void SplitTdsNameTest_SimpleValidName2()
    {
        string tdsName = "Mr Daniel George Trunley";
        MemberName expected = new MemberName("Mr", "Daniel George", "Trunley");
        MemberName actual;
        actual = TdsTransformer.SplitTdsName(tdsName);
        Assert.AreEqual(expected, actual);
    }

    [TestMethod()]
    public void SplitTdsNameTest_SimpleValidName3()
    {
        string tdsName = "Daniel George Trunley";
        MemberName expected = new MemberName("", "", "Daniel George Trunley");
        MemberName actual;
        actual = TdsTransformer.SplitTdsName(tdsName);
        Assert.AreEqual(expected, actual);
    }

Остальные тесты одного типа.

1 Ответ

7 голосов
/ 02 ноября 2011

Ваши тесты не следуют принципу Независимый , поэтому один тест не должен влиять на другие тесты.

Просматривая предоставленный вами код, я могу предположить, что проблема в том, что кэш TdsTransformer.SplitTdsName()некоторые данные.Я бы предложил очистить все общие переменные:

[TestCleanup()]
public void Cleanup()
{
   // cleanup all shared variables     
}

Полезные ссылки:

...