是否可以在测试项目之外使用[TestMethod]属性?

时间:2015-07-31 06:39:48

标签: c# unit-testing

我觉得测试方法应该放在他们应该测试的方法之下。但是在tutorials我发现到目前为止他们只在[TestClass] es中放置了单元测试项目。为什么这有必要?

1 个答案:

答案 0 :(得分:3)

为什么要在单元测试项目之外使用[TestMethod]? [TestMethod]的想法是将其标记为单元测试的方法。

正常的最佳做法是将您的单元测试放在一个单独的项目中。我相信是Roy Osherove建议你设置这样的单元测试:

  • 每个项目都有一个名为YourProjectName.Tests的单元测试项目(如果需要,可以进一步分为YourProjectName.UnitTests和YourProjectName.IntegrationTests)

  • 要测试的每个类或工作单元应在单元测试项目中拥有自己的文件,名称类似于YourClassNameUnitTests

  • 每个要测试的方法或工作单元都需要使用[TestMethod]或类似方法进行标记,您应该使用描述性名称,例如public void MethodName_ScenarioUnderTest_ExpectedBehaviour()

要专门回答您的问题,如果您在方法本身下有[TestMethod],那么您将很难管理,因为:

  • 当你有100个测试时,你必须到处寻找它们才能找到它们

  • 您的测试将在您的生产代码中混淆而不是分开(当他们是一个单独的项目时,您可以在没有大量单元测试的情况下发布您的生产代码)

    < / LI>
  • 在您维护测试之后出现的人会非常感谢能够查看一个类的文件并查看所有测试,而不必滚动一个充满方法的生产类&gt; <测试方法>更多方法&gt;更多的测试方法。

  • 这也使得单元测试很难维护。如果您因任何原因需要移动单元测试,想象如果您的单元测试不在一个文件中会有多困难?如果您按照自己的描述进行操作,则必须逐个进行切割和粘贴测试,因为您不能一次选择一堆。

希望有所帮助。