Реализация TestCleanup () - PullRequest
       3

Реализация TestCleanup ()

1 голос
/ 02 ноября 2011

Как бы я написал метод [TestCleanup ()] для этих [TestMethod ()].

У меня есть 11 из следующих:

При запуске по отдельности они проходят, когда не запускаются одновременно, первые проходы

[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);
}

MemberName:

public struct MemberName
{
    public string Title;
    public string FirstNames;
    public string LastNames;

    public MemberName(string title, string firstNames, string lastNames)            
    {            
        Title = title;
        FirstNames = firstNames;
        LastNames = lastNames;
    }
}

SplitTds:

public MemberName SplitTdsName(string tdsName)
    {
        return NameSplitter.Splitter(tdsName);
    }

Splitter:

public static MemberName Splitter(string fullName)
    {
        nameInFull = fullName;
        SetAllowedTitles();
        SplitNamesAndRemovePeriods();
        SetTitles();
        MemberName splitName = new MemberName(titles, firstNames, lastNames);
        return splitName;
    }

1 Ответ

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

Исходя из того, что предоставлено, не похоже, что какая-либо очистка необходима.

Если есть метод TestInitialize, просто отмените то, что там сделано.

Если TdsTransformer.SplitTdsName хранит какое-либо внутреннее состояние, вам также придется это очистить. Хотя, если он делает , он, скорее всего, не должен быть статическим методом.

Исходя из правок, меня волнуют два следующих метода:

    SetAllowedTitles();
    SetTitles();

Они подразумевают, что существует внутреннее состояние, которое, на мой взгляд, очень плохо для статического класса. Вероятно, это проблема, которую вы видите, когда последовательные тесты не проходят.

Чтобы исправить эти и , оставьте их статическими, пусть они возвращают значения вместо хранения в статических членах:

    var allowedTitles = SetAllowedTitles(fullName);
    var names = SplitNamesAndRemovePeriods(fullName);  //likely a struct or class with first/last names
    var titles = SetTitles(allowedTitles);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...