有没有什么好方法可以在测试环境中使用条件属性?
我的想法是,如果你能做到这一点:
[Conditional("Debug")]
public void DebugMethod()
{
//...
}
也许你可以用一些:(?)
[Conditional("Test")]
public void TestableMethod()
{
//...
}
有没有什么好方法可以在测试环境中使用条件属性?
我的想法是,如果你能做到这一点:
[Conditional("Debug")]
public void DebugMethod()
{
//...
}
也许你可以用一些:(?)
[Conditional("Test")]
public void TestableMethod()
{
//...
}
当有更好的选择时,我看不到它的用途:测试项目。
使用 NUnit 或 MSTest 以更优雅的方式实现此功能。
我会接受 Mehrdad 的回答——我只是想提供更多关于何时可以使用这些属性的上下文:
诸如此类[Conditional]
的东西更普遍地用于控制诸如日志记录/跟踪之类的东西,或者与正在执行的调试器的交互;将调用放在常规代码的中间是有意义的,但在某些构建中您可能不希望这样做(而且#if... 等是如此丑陋且容易忘记)。
如果测试代码不是产品的一部分,它不应该在产品代码库中。我见过一些项目试图将单元测试包含在与测试对象相同的项目中,并使用#if
语句将它们仅包含在调试版本中,但后来才后悔。
一个明显的问题是应用程序项目获得了对单元测试框架的引用。即使您可能不需要将该框架作为产品的一部分发布(如果您可以保证发布版本中的任何代码都不会引用它),但它对我来说仍然有点可笑。
让测试代码成为测试代码,产品代码成为产品代码,让产品代码对此毫无头绪。
另一个问题是您可能希望在发布版本上运行单元测试。(我们当然会)。