C#:不使用第三方框架进行单元测试?

时间:2009-12-11 08:07:09

标签: c# unit-testing testing visual-studio-2005 assert

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

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

是否存在等效的发布模式或是否有其他替代方案(不使用第三方工具)?

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:2)

请勿滥用或屠宰Trace.AssertDebug.Assert进行单元测试。

使用第三方框架。

答案 2 :(得分:1)

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

至于你的大多数问题,它在某种程度上取决于你使用的单元测试工具。但是,一般来说,你想要的是预处理器指令

  

// C#

     

ifndef DEBUG

//Unit test
     

如果

结束

也许适合你的情况

  

// C# - 对于NUnit

     

if!DEBUG

[Ignore("Only valid for release")] 
     

如果

结束

答案 3 :(得分:0)

您实际上可以在Release配置中使用Debug.Assert(或Trace.Assert)。有关详细信息,请查看MSDN上的this文章。

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

答案 4 :(得分:0)

使用第三方测试框架可以确保可以获得更好的代码覆盖率。通过编写测试来测试方法而不是仅仅检查信息意味着您可以在边缘情况投入生产之前对其进行测试。