构建服务器上的单元测试:发布或调试代码?

时间:2010-08-05 16:00:00

标签: c# unit-testing continuous-integration

在.NET(C#)中,使用调试/发布版本进行单元测试是否有任何优势/劣势?

您通常在构建服务器上使用哪种目标配置进行单元测试?这有关系吗?

代码覆盖率如何(对于这个我猜测需要调试版本)。

7 个答案:

答案 0 :(得分:9)

我建议运行发布代码。出于几个原因。

1)这是客户将使用的代码。

2)某些代码具有特殊的调试条件,这些条件会在调试版本和发布版本之间产生差异。

答案 1 :(得分:3)

您必须按照最终在客户端计算机上运行的方式测试代码。在大多数理智的部署方案中,将在Release配置中编译代码。

答案 2 :(得分:2)

我会尽可能使用发布版本,以尽可能接近最终产品。

调试模式和发布模式之间存在细微差别,通常只会对性能产生影响,但不会产生结果。但是,如果代码有一些时间问题,它们可能只在发布模式下显示,所以你可以抓住机会抓住它们。

答案 3 :(得分:2)

尽管大多数人显然倾向于对发布代码进行单元测试,但我想知道调试版本是否会发现更多错误。 (我可能错了)

E.g。在VS调试代码中,未初始化的变量被强制为某些可怕的值,而不是偶然的“0”。也许在.NET中它没有什么大不同,但对我来说,主要用C ++编写算法核心代码,这可能是至关重要的。

我期待任何有启发性的评论;)。

答案 4 :(得分:1)

在测试调试代码时,(对我来说)更容易找到异常的根。

答案 5 :(得分:1)

在发布模式下添加另一个原因进行测试。如果遇到Debug.WriteLine()调用,某些CI服务(Appveyor)将失败,即使测试本身是绿色的。

答案 6 :(得分:0)

我们同时运行Debug + Release。

我们为每个版本输出一个单独的测试结果xml。

有时仅在Debug中有错误,有时仅在Release中,您希望尽快捕获所有错误。

祝你好运!