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

时间:2017-02-01 02:47:34

标签: c# visual-studio unit-testing

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

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

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

如果是,怎么样?我应该将它们放在相同或不同的名称空间中吗? 你能举一些例子吗?

感谢。

3 个答案:

答案 0 :(得分:2)

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

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

namespace MyCompany.MyLibrary
{
    // classes
}

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

答案 1 :(得分:1)

是的,没有任何限制"正在测试的代码"是来自。

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

答案 2 :(得分:0)

是的,但是

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

此外,相同的app.config(或web.config,具体取决于您的解决方案)将适用于您的测试和被测系统。这意味着您无法为AutoFac等设置备用配置,这通常可用于单元/隔离测试。