Можем ли да персонализираме изхода на XUnit и TestDriven.Net

Използвам XUnit с TestDriven.Net или Resharper тестов инструмент, за да изпълня тестовете си. Наистина харесвам BDD стила на писане на моите тестове, така че се чудех дали има нещо, което можем да променим изхода на тези рамки?

Харесва ми да именувам теста си с долна черта и искам да разделя името на теста и да го форматирам във формат „Дадено, когато, тогава“. Възможно ли е изобщо с тези инструменти?


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