【问题标题】:Is it possible to write the code to be tested and the testing code in the same source file?是否可以将要测试的代码和测试代码写在同一个源文件中?
【发布时间】:2017-02-01 10:51:56
【问题描述】:

在 Visual Studio IDE 中,我可以为源文件中的代码创建一个带有单元测试类的单元测试文件,方法是右键单击要测试的代码并选择创建单元测试的选项。

测试代码和要测试的代码不仅在同一个文件中,而且不在同一个命名空间中。

是否可以将要测试的代码和测试代码写在同一个源文件中?

如果是,如何?我应该将它们放在相同还是不同的命名空间中? 可以举一些例子吗?

谢谢。

【问题讨论】:

  • 你可以。但这不一定是个好主意

标签: c# visual-studio unit-testing


【解决方案1】:

这是可能,但这也意味着您部署您的测试与您的代码,以及任何模拟,虚拟数据等。所有这些都是不必要的并且可能会使任何尝试使用该库的人感到困惑。

但是,要回答这个问题,只需使用不同的 namespace 块将测试类分隔在单独的命名空间中即可。

namespace MyCompany.MyLibrary
{
    // classes
}

namespace MyCompany.MyLibrary.Test
{
    // tests, mocks, etc.
}

【讨论】:

  • 我实际上喜欢保持 sut 和测试类的命名空间相同,同时按项目/程序集名称分隔代码。因此,您将拥有 MyCompany.MyLibrary.dll 和 MyCompany.MyLibrary.Tests.dll。然后我不必在测试类中包含 MyCompany.MyLibrary 命名空间。
【解决方案2】:

是的,“被测代码”的来源没有任何限制。

虽然有点奇怪,但您可以只拥有 UnitTest 项目并将您尝试的代码放在测试旁边。如果您愿意 - 即使在使用您选择的相同或不同命名空间的相同文件中(C# 不是 Java 并且文件名/位置和命名空间之间没有连接)

【讨论】:

    【解决方案3】:

    是的,但是

    如果您将它们放在与被测系统相同的代码库中,那么您将无法在不部署测试的情况下部署系统。您希望在生产服务器上进行测试吗?

    此外,相同的 app.config(或 web.config,取决于您的解决方案)将同时应用于您的测试和被测系统。这意味着您不能为 AutoFac 之类的东西设置备用配置,这通常对单元/隔离测试很方便。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-24
      • 2018-10-06
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多