2017-03-02 48 views
0

我正在使用MSTest,并且发现自己写了一些相当荒谬的测试方法名称,所以我可以在查看测试结果时了解运行的内容。在MSTest中组织测试名称

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

enter image description here

注意GetImportReturnsImportView方法在图像中。我不得不在某个时候改变这个名字,因为它可能会被认为是近乎重复的,而且它并没有真正告诉我它正在测试什么。

在MSTest窗口中,我可以按Class排序,但这并没有太大的作用(我宁愿通过测试项目来查看)。理想情况下会是某种完整的树结果,所以我可以通过命名空间/测试类来钻取。

我可以使用什么样的测试命名约定来实现某些相当合理的测试结果快速查看,而不必疯狂使用方法名称?

我试图避免外部工具(我已经使用OpenCover和ReportGenerator外部集成层次的东西,所以这实际上只是快速的在VS参考)

+0

尝试在测试浏览器中使用“group by”,我喜欢按类分组。尽管如此,我发现ReSharper的测试运动员比内置测试运行者更好地组织测试 – Kritner

+0

哦,再次查看您的图像,我想您可能已经这样做了:D – Kritner

回答

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有类的类别。

+0

谢谢,虽然不是真的想使用它...我已经做了集成测试,虽然我们可以在一个方法上使用倍数,但是对于我希望MSTest能够自行解决的事情来说,这是很多额外的打字和混乱。 (如果我们可以将它应用于测试课程,那么我会更加倾向于使用它!) – jleach