0

单元测试应该在调试模式还是发布模式下运行?

我正在使用 Visual Studio Standard Edition 2005,它没有附带任何单元测试框架。由于我也不想使用任何其他 3rd 方单元测试框架,我曾经Debug.Assert在所有单元测试方法中执行实际测试。但是,Debug.Assert仅适用于调试模式。

在发布模式下是否有等价物或是否有任何其他替代方案(不使用第 3 方工具)?

4

5 回答 5

7

你知道你可以在任何项目配置中定义 DEBUG 常量吗?(在 Visual Studio 中,项目属性 - 构建 - 定义调试符号)。或者,您可以定义一个自定义 TEST 常量(项目属性 - 构建 - 条件编译符号),并使用Conditional 属性创建仅在定义此常量时运行的测试方法。

无论如何,我会说使用诸如NUnit之类的 3rd 方测试框架是完成这项任务的最合适的方式,但也许你有充分的理由不愿意使用这些工具。

于 2009-12-11T08:11:38.570 回答
2

Don't abuse or butcher Trace.Assert or Debug.Assert for unit testing purposes.

Use a third-party framework.

于 2009-12-11T08:21:18.577 回答
1

http://blogs.msdn.com/billbar/pages/features-and-behavior-of-load-tests- contains-unit-tests-in-vsts-2008.aspx

至于您的大部分问题,这在一定程度上取决于您使用的单元测试工具。但是,通常您想要的是预处理器指令

//C#

ifndef 调试

//Unit test

万一

也许适合你的情况

//C# - 对于 NUnit

如果!调试

[Ignore("Only valid for release")] 

万一

于 2009-12-11T08:13:52.357 回答
0

您实际上可以在发布配置中使用 Debug.Assert(或 Trace.Assert)。查看MSDN 上的这篇文章以获取更多信息。

就我个人而言,我认为在 Debug 配置上运行单元测试没有问题。单元测试通常针对诸如逻辑之类的东西,而不是受发布与调试影响的项目,例如性能。

于 2009-12-11T08:13:11.827 回答
0

使用 3rd 方测试框架可以确保您的代码获得更好的代码覆盖率。通过能够编写测试来测试方法,而不仅仅是沿途检查信息,这意味着您可以在边缘案例投入生产之前对其进行测试。

于 2009-12-11T08:18:08.397 回答