4

有没有什么好方法可以在测试环境中使用条件属性?

我的想法是,如果你能做到这一点:

[Conditional("Debug")]
public void DebugMethod()
{
    //...
}

也许你可以用一些:(?)

[Conditional("Test")]
public void TestableMethod()
{
    //...
}
4

4 回答 4

4

当有更好的选择时,我看不到它的用途:测试项目。

使用 NUnit 或 MSTest 以更优雅的方式实现此功能。

于 2009-06-11T08:58:39.477 回答
1

我会接受 Mehrdad 的回答——我只是想提供更多关于何时可以使用这些属性的上下文:

诸如此类[Conditional]的东西更普遍地用于控制诸如日志记录/跟踪之类的东西,或者与正在执行的调试器的交互;将调用放在常规代码的中间是有意义的,但在某些构建中您可能不希望这样做(而且#if... 等是如此丑陋且容易忘记)。

于 2009-06-11T09:03:44.803 回答
1

如果测试代码不是产品的一部分,它不应该在产品代码库中。我见过一些项目试图将单元测试包含在与测试对象相同的项目中,并使用#if语句将它们仅包含在调试版本中,但后来才后悔。

一个明显的问题是应用程序项目获得了对单元测试框架的引用。即使您可能不需要将该框架作为产品的一部分发布(如果您可以保证发布版本中的任何代码都不会引用它),但它对我来说仍然有点可笑。

让测试代码成为测试代码,产品代码成为产品代码,让产品代码对此毫无头绪

于 2009-06-11T09:04:33.787 回答
1

另一个问题是您可能希望在发布版本上运行单元测试。(我们当然会)。

于 2009-06-11T09:34:00.000 回答