我正在使用VS2010,我有以下方法调用:
[Conditional("DEBUG")]
public void VerboseLogging() { }
public void DoSomething() {
VerboseLogging();
Foo();
Bar();
}
Run Code Online (Sandbox Code Playgroud)
然后我对该DoSomething方法进行了单元测试,检查它是否发出了正确的日志记录.
[Conditional("DEBUG"), TestMethod()]
public void EnsureVerboseLog() {
DoSomething();
VerifyVerboseLoggingCalled(); // <-- fail in release builds since VerboseLogging() calls get eliminated.
}
Run Code Online (Sandbox Code Playgroud)
似乎MSTest只看到TestMethod并执行它(生成失败的测试),即使我已经标记它Conditional("DEBUG")并在发布模式下编译它.
那么,有没有办法根据编译常量排除某些测试#if?
我正在编写一个NUnit测试,我想只在Release配置中运行.使用测试用例属性是否有一种优雅的方式?现在,我用编译器指令包围整个功能块:
我正在使用Nunit 2.5.6.10205.
#if !DEBUG
[Test]
public void MyReleaseOnlyTest()
{
// stuff
}
#endif
Run Code Online (Sandbox Code Playgroud)