在MSTest中组织测试名称

时间:2017-03-02 12:19:19

标签: unit-testing naming-conventions mstest

我正在使用MSTest,我发现自己编写了一些相当荒谬的测试方法名称,因此当我查看测试结果时,我可以知道正在运行的是什么。

为了理解测试资源管理器结果列表中的内容,我最终使用了几乎“包含名称空间”的方法名称。打破我背部的稻草? PostImportMemberStagingBeginImportThrowsArgOutOfRangeIfImportMethodUnrecognized()

enter image description here

请注意图片中的GetImportReturnsImportView方法。我必须在某个时候改变这个名字,因为它可能最终会被复制,并且它并没有真正告诉我它正在测试什么。

在MSTest窗口中,我可以按类排序,但这并没有真正做多少(而且我更倾向于通过测试项目进行查看)。理想情况下,这将是某种完整的树结果,因此我可以通过命名空间/测试类进行深入研究。

我可以使用哪种测试命名约定来实现在测试结果中快速查看的相当合理的内容,而不必为方法名称疯狂?

我正在尝试避免使用外部工具(我已经在外部使用OpenCover和ReportGenerator进行集成级别的工作,所以这只是为了快速进行VS参考)

2 个答案:

答案 0 :(得分:1)

您可以使用TestCategory属性更好地将测试组织到模块中。除此之外,我发现Given..._When..._Then...格式的命名测试,对应测试体非常方便:

public class EditControllerTests
{
    [TestMethod]
    [TestCategory("Controller tests")]
    public void GivenSomething_WhenSomethingHappens_ThenResultIsSomething()
    {
        GivenSomeData(new Data() { X = 1, Y = 2 });

        WhenControllerActionExecutes(editController.Index);

        Assert.Equals(jsonResult, "...");
    }
}

当然,最好的方法是放弃MSTest并使用更成熟的东西,比如NUnit(从一个转换到另一个很容易自动执行)。 NUnit有类的类别。

答案 1 :(得分:1)

您可以在类/程序集级别应用TestCategory属性。 MSTest支持这一点:https://blogs.msdn.microsoft.com/visualstudioalm/2017/02/25/mstest-v2-now-and-ahead/ 如果您需要任何进一步的信息,请与我们联系。