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

本文关键字:TestMethod 属性 有可能 测试 项目 是否 | 更新日期: 2023-09-27 18:05:37

我觉得测试方法应该放在它们应该测试的方法下面。但在教程中,我发现到目前为止,它们只放在单元测试项目中的[TestClass]中。为什么这是必要的?

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

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

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

  • 每个项目都有一个名为YourProjectName的单元测试项目。测试(可以进一步分解为YourProjectName)。UnitTests和YourProjectName。

  • 要测试的每个类或工作单元应该在单元测试项目中有自己的文件,命名为YourClassNameUnitTests

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

具体地回答你的问题,如果你在方法本身下有[TestMethod],你将使事情很难管理,因为:

  • 当你有100个测试时,你将不得不到处寻找它们

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

  • 在您之后维护测试的人将非常感激能够查看一个类的文件并查看所有测试,而不必滚动充满方法>测试方法>更多方法>更多测试方法的生产类。

  • 这也使得单元测试很难维护。如果出于任何原因需要移动单元测试,想象一下,如果单元测试不在一个文件中,这将是多么困难?如果你按照你描述的那样做,你将不得不一个接一个地进行测试,剪切和粘贴,因为你不能一次选择一堆。

希望对你有帮助。