测试命名 - Resharper和xUnit

时间:2014-09-25 15:10:00

标签: visual-studio-2013 resharper bdd xunit

在R#8.2.0和VS2013.3中,测试运动员我想按照Traits进行分组,就像在VS测试运行中一样:

问题:我可以让R#显示如下测试:

enter image description here

在R#中,我能得到的最接近的是:

enter image description here

测试代码是:

    [Trait("Homepage", "User changes sort order to highest rating first")]
public class ChangeSortOrderToRating : IntegrationTestBaseWithData {
    readonly JokeViewer viewer;
    public ChangeSortOrderToRating() {
        viewer = new JokeViewer(new Session());
    }

    [Fact(DisplayName = "Show all 3 Stories")]
    public void ShowAllStories() {
        List<Joke> result = viewer.ShowAllJokesHighestRatingFirst();
        Assert.Equal(3, result.Count);
    }
    [Fact(DisplayName = "Show all Stories in rating order")]
    public void ShowListOfStoriesInDescendingRankOrder() {
        var result = viewer.ShowAllJokesHighestRatingFirst();
        // 10,2,5 is order of insert in db
        // First should be rating of 2
        Assert.Equal(10, result[0].Rating);
        Assert.Equal(5, result[1].Rating);
        Assert.Equal(2, result[2].Rating);
    }
}

安装xUnit的R#扩展名: enter image description here

1 个答案:

答案 0 :(得分:1)

如果你的意思是你想避免那里的方法名称,不幸的是,现在,这是不可能的。

ReSharper插件与xunit 1.x协同工作的方式意味着在实际运行测试之前显示名称是不可用的(因为插件使用xunit的API来定位测试,但是{ {1}}属性不能被调用,因为它查看源代码而不是编译代码。DisplayName可能对代码做了任何事情(例如DisplayName属性添加参数信息),因此在从代码构建测试时没有使用的值。

我希望xunit 2.x支持能解决这个问题。 2.x正在努力确保可以根据源代码分析检索所有信息,因此xunit API可以调用类似反射的抽象来获取所有信息,包括一个漂亮的显示名称。对2.x的支持目前正在进行中,测试运行良好,但仍然使用xunit 1.x来发现测试。