单元测试应该在调试模式还是发布模式下运行?
我正在使用 Visual Studio Standard Edition 2005,它没有附带任何单元测试框架。由于我也不想使用任何其他 3rd 方单元测试框架,我曾经Debug.Assert
在所有单元测试方法中执行实际测试。但是,Debug.Assert
仅适用于调试模式。
在发布模式下是否有等价物或是否有任何其他替代方案(不使用第 3 方工具)?
单元测试应该在调试模式还是发布模式下运行?
我正在使用 Visual Studio Standard Edition 2005,它没有附带任何单元测试框架。由于我也不想使用任何其他 3rd 方单元测试框架,我曾经Debug.Assert
在所有单元测试方法中执行实际测试。但是,Debug.Assert
仅适用于调试模式。
在发布模式下是否有等价物或是否有任何其他替代方案(不使用第 3 方工具)?
你知道你可以在任何项目配置中定义 DEBUG 常量吗?(在 Visual Studio 中,项目属性 - 构建 - 定义调试符号)。或者,您可以定义一个自定义 TEST 常量(项目属性 - 构建 - 条件编译符号),并使用Conditional 属性创建仅在定义此常量时运行的测试方法。
无论如何,我会说使用诸如NUnit之类的 3rd 方测试框架是完成这项任务的最合适的方式,但也许你有充分的理由不愿意使用这些工具。
Don't abuse or butcher Trace.Assert
or Debug.Assert
for unit testing purposes.
Use a third-party framework.
至于您的大部分问题,这在一定程度上取决于您使用的单元测试工具。但是,通常您想要的是预处理器指令
//C#
ifndef 调试
//Unit test
万一
也许适合你的情况
//C# - 对于 NUnit
如果!调试
[Ignore("Only valid for release")]
万一
您实际上可以在发布配置中使用 Debug.Assert(或 Trace.Assert)。查看MSDN 上的这篇文章以获取更多信息。
就我个人而言,我认为在 Debug 配置上运行单元测试没有问题。单元测试通常针对诸如逻辑之类的东西,而不是受发布与调试影响的项目,例如性能。
使用 3rd 方测试框架可以确保您的代码获得更好的代码覆盖率。通过能够编写测试来测试方法,而不仅仅是沿途检查信息,这意味着您可以在边缘案例投入生产之前对其进行测试。