【问题标题】:How to write tests for debug and release configurations如何为调试和发布配置编写测试
【发布时间】:2015-04-12 23:48:28
【问题描述】:

我正在编写一个库,如果它是调试或发布,它的行为会根据模式而有所不同。我想写一个单元测试TestDebugBehaviourTestReleaseBehaviour。是否可以将测试设置为在调试/发布模式下运行?

【问题讨论】:

  • 旁注:如果您打算让其他人使用该库,这通常是个坏主意 - 在许多情况下,只有一种风格被开发/测试过,而其他风格则假定工作相同。如果您的图书馆行为不同,它可能会给用户带来不愉快的惊喜。提供配置让我们在当前的“调试”和“发布”模式之间切换而无需重新编译可能会更好(作为副作用,您将避免与您自己解决的完全相同的问题)。
  • @AlexeiLevenkov 它只是在调试模式下运行时抛出异常。按计划进行。

标签: c# .net visual-studio unit-testing testing


【解决方案1】:

我认为您应该能够使用预处理器指令来做到这一点。我在下面的示例中使用 xunit;你可能不得不用不同的属性来装饰你的测试方法。

这个测试应该只在调试模式下执行。

#if DEBUG

[Fact]
public void ThisIsATestThatWillOnlyRunInDebugMode()
{
    throw new Exception("I am running in debug mode.");
}

#endif

这个测试并不完全在发布模式下运行,它只是在除调试模式之外的任何模式下运行,但这通常已经足够了。

#if !DEBUG

[Fact]
public void ThisIsATestThatWillNotRunInDebugMode()
{
    throw new Exception("I am running in in something other than debug mode.");
}

#endif

【讨论】:

  • 或#if DEBUG ... #ELSE ... #endif
  • 那是编写单元测试的有效方法吗?不应该对两种配置都进行单元测试吗?
【解决方案2】:

没有。这是不可能的。如果要进行这样的比较,只需在两个版本中编译并运行它并比较结果即可。如果某个方法仅在发布模式下行为不正确,请使用记录器来跟踪该方法的行为并检查哪里出了问题。

【讨论】:

    猜你喜欢
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多