在.NET(C#)中,使用调试/发布版本进行单元测试是否有任何优势/劣势?
您通常在构建服务器上使用哪种目标配置进行单元测试?这有关系吗?
代码覆盖率如何(对于这个我猜测需要调试版本)。
答案 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中,您希望尽快捕获所有错误。
祝你好运!