我正在使用VS2010,我有以下方法调用:
[Conditional("DEBUG")]
public void VerboseLogging() { }
public void DoSomething() {
VerboseLogging();
Foo();
Bar();
}
然后,我对
DoSomething
方法进行了单元测试,该方法检查它是否发出正确的日志记录。[Conditional("DEBUG"), TestMethod()]
public void EnsureVerboseLog() {
DoSomething();
VerifyVerboseLoggingCalled(); // <-- fail in release builds since VerboseLogging() calls get eliminated.
}
似乎MSTest只能看到
TestMethod
并执行它(生成失败的测试),即使我已经用Conditional("DEBUG")
对其进行了标记并在 Release模式下进行了编译。因此,有没有一种方法可以根据
#if
以外的编译常量来排除某些测试? 最佳答案
ConditionalAttribute
不会影响方法是否已编译到应用程序中。它控制是否将对方法的调用编译到应用程序中。
在此示例中,没有对EnsureVerboseLog
的调用。 MSTest只会在assemlby中看到一个带有TestMethod
属性的方法,并正确执行它。为了防止MSTest运行该方法,您需要执行以下操作之一
关于c# - 使MSTest尊重[Conditional()]属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3133988/