Можем ли мы настроить вывод XUnit и TestDriven.Net?

Я использую XUnit с TestDriven.Net или Resharper для запуска тестов. Мне очень нравится стиль написания тестов BDD, поэтому мне было интересно, можем ли мы что-то изменить в выводе этих фреймворков?

Мне нравится называть мой тест символами подчеркивания, и я хочу разделить имя теста и отформатировать его в формате Given, When, Then. Это вообще возможно с этими инструментами?


person Afraz Ali    schedule 25.09.2014    source источник
comment
Взгляните на @ specflow.org Лично я влюбился в него. Это среда тестирования BDD, которая идет поверх (например) XUnit и предоставляет то, что вам нужно, в значительной степени из коробки.   -  person decPL    schedule 25.09.2014
comment
decPL Я знаком с Specflow, лично мне нравится MSpec, еще один фреймворк BDD. Однако многие люди думают, что BDD можно выполнить только с помощью определенного набора инструментов, что не соответствует действительности, хотя, если вы видите информацию в определенном стандартном формате, это действительно помогает вам в изучении концепций. Вот почему мне было интересно, можем ли мы использовать BDD без фактического изменения фреймворка? :)   -  person Afraz Ali    schedule 25.09.2014
comment
Никогда не предполагал, что это единственный инструмент; попробовал оба, влюбился в SpecFlow, но явно YMMV   -  person decPL    schedule 25.09.2014


Ответы (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("_", " ");
    }
}
person Jin-Wook Chung    schedule 26.09.2014
comment
Милый ответ! Спасибо, приятель, конечно, дай мне хук, который я хотел реализовать, теперь я могу настроить вывод результатов моего теста. - person Afraz Ali; 26.09.2014