【问题标题】:Can we customize the output of XUnit and TestDriven.Net我们可以自定义 XUnit 和 TestDriven.Net 的输出吗
【发布时间】:2014-09-25 09:15:23
【问题描述】:

我正在使用 XUnit 和 TestDriven.Net 或 Resharper 测试运行程序来执行我的测试。我真的很喜欢编写测试的 BDD 风格,所以我想知道是否有一些我们可以修改这些框架的输出的内容?

我喜欢用下划线命名我的测试,并希望拆分测试名称并将其格式化为 Given、When、Then 格式。使用这些工具是否有可能?

【问题讨论】:

  • 快看@specflow.org我个人已经爱上了它。这是一个 BDD 测试框架,位于(例如)XUnit 之上,并提供开箱即用的您所需的东西。
  • decPL 我知道 Specflow,我个人很喜欢 MSpec 另一个 BDD 框架字。然而,很多人认为 BDD 只能使用特定的工具集完成,这是不正确的,尽管如果您以特定的标准格式查看信息,它确实有助于您学习概念。这就是为什么我想知道我们是否可以在不实际更改框架的情况下使用 BDD? :)
  • 从来没有建议它是唯一的工具;两者都尝试过,爱上了 SpecFlow,但显然是 YMMV

标签: c# resharper xunit testdriven.net


【解决方案1】:

我不确定你想做什么。您似乎想更改某个测试运行程序上显示的测试名称。显示测试名称实际上仅取决于测试运行器(工具)。这意味着我们可以自定义名称,也可以不使用我们使用的测试运行器。

查看了以下代码,这可能是您想要执行的代码。如果代码不是这样的话,至少我认为它可以告诉你一些关于如何自定义测试名称的想法。

public class Given_Foo
{
    [Test]
    public void Then_Bar_returns_correct_result()
    {
        Assert.True(flase, "Check out test names...");
    }
}

public class TestAttribute : FactAttribute
{
    public TestAttribute()
    {
    }

    protected override IEnumerable<ITestCommand> EnumerateTestCommands(IMethodInfo method)
    {
        yield return new CustomNamedTestCommand(method);
    }
}

public class CustomNamedTestCommand : FactCommand
{

    public CustomNamedTestCommand(IMethodInfo method) : base(method)
    {
        this.DisplayName = DisplayName.Replace("_", " ");
    }
}

【讨论】:

  • 甜蜜的答案!谢谢 Mate,当然给我我想要实现的钩子,现在我可以自定义我的测试结果的输出了。
猜你喜欢
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
相关资源
最近更新 更多