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

发布于 2024-09-13 01:26:29 字数 116 浏览 3 评论 0原文

在 .NET(C#) 中,使用调试/发布构建进行单元测试有什么优点/缺点?

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

代码覆盖率怎么样(对于这个,我猜需要调试版本)。

In .NET(C#) is there any advantage/disadvantage to go with debug/release build for unit testing?

Which target configuration do you usually use for unit testing on a build server? Does it matter?

What about code coverage (for this one I'm guessing debug versions are needed).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

半衾梦 2024-09-20 01:26:29

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

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

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

I'd recommend running the release code. For a couple of reasons.

1) It is the code that the customers will be using.

2) Some code has special debug conditionals that will produce differences between the debug and release builds.

心头的小情儿 2024-09-20 01:26:29

您必须按照代码最终在客户端计算机上运行的方式对其进行测试。在大多数正常的部署场景中,代码将在发布配置中编译。

You must test the code the way it will ultimately run on the client's machine. In most sane deployment scenarios that will be code compiled in the Release configuration.

梦归所梦 2024-09-20 01:26:29

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

调试模式和发布模式之间存在细微差别,通常只会影响性能,但不会影响结果。但是,如果代码存在一些计时问题,它们可能只会在发布模式下显示,因此您可以借此机会捕获这些问题。

I would use release build when possible, to get everything as close to the final product as possible.

There are small differences between debug mode and release mode that normally only make a difference for performance, but not result. However, if there is some timing problems with the code they may only show in release mode, so you could take the opportunity to possibly catch those.

疯到世界奔溃 2024-09-20 01:26:29

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

例如,在 VS 调试代码中,未初始化的变量被强制为一些可怕的值,而不是“意外”为 0。也许在 .NET 中这并没有多大区别,但对我来说,主要用 C++ 编写算法核心代码,这可能至关重要。

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

Despite most people obviously favour to unit test the release code, I wonder whether the debug build might uncover more errors, though. (I might be wrong)

E.g. afaik in VS debug code, uninitialized variables are forced to some awful value instead of being 0 "by accident". Maybe in .NET it does not make a big difference, but for me, doing mainly algorithmic core code in C++, this can be crucial.

I look forward to any enlightening comments ;).

画▽骨i 2024-09-20 01:26:29

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

Just adding another reason to test in release mode. Some CI services (Appveyor) will fail the build if it comes across a Debug.WriteLine() call, even though the test itself is green.

丘比特射中我 2024-09-20 01:26:29

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

It is easier (for me) to get to the root of an exception when testing debug code.

愚人国度 2024-09-20 01:26:29

我们正在运行两者,调试+发布。

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

有时仅在调试中出现错误,有时仅在发布中出现错误,您希望尽快捕获所有错误。

祝你好运!

We are running both, Debug + Release.

We output a separate tests results xml for each build.

Sometimes there are errors in Debug only, and sometimes in Release only, you want to catch them all ASAP.

Good luck!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文