【问题标题】:C#: Using Conditional-attribute for testsC#:使用条件属性进行测试
【发布时间】:2010-11-02 01:51:33
【问题描述】:

有什么好的方法可以在测试的上下文中使用条件属性吗?

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

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

也许你可以使用:(?)

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

【问题讨论】:

    标签: c# testing attributes conditional


    【解决方案1】:

    如果有更好的选择:测试项目,我认为没有用处。

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

    【讨论】:

    • 请详细说明。这只是一场头脑风暴。我只是把它扔在那里,我不知道。
    • 有一些测试框架可以自动处理这个问题。它们提供了一些用于装饰类的属性。这可能会更好地解释:nunit.org/index.php
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 2019-07-15
          • 2020-06-19
          • 2022-12-16
          • 1970-01-01
          • 1970-01-01
          • 2020-12-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-05
          相关资源
          最近更新 更多