如何获取MSTest OwnerAttribute到Jenkins报告?

时间:2016-07-11 12:44:36

标签: jenkins mstest

我想将基于MSTest的UnitTests的Owner属性放入Jenkins的测试报告中(由MSTest Publisher提供)。因此,很容易看到负责(失败)UnitTest的Jenkins测试结果报告。

我的测试用例如下:

[TestMethod, Owner("AAA")]
public void IsItRealTest()
{
    var result = IsItReal();
    Assert.IsTrue(result);
}

我已经检查了Jenkins MS Test Plugin的源代码,它将MSTest TRX格式转换为Jenkins可读的JUnit格式,但我不想更改插件。

另一种方法是将测试所有者写入stdout,如:

[TestMethod, Owner("AAA")]
public void IsItRealTest()
{
    Console.WriteLine("Owner: "+ GetOwnerAttributeOfCurrentMethod());
    var result = IsItReal();
    Assert.IsTrue(result);
}

但这不可行,因为我们已经有数以千计的测试用例。 所以我尝试使用TestContext属性,该属性由MSTest自动设置。 我们已经有了所有测试的基类,我可以在其中执行以下操作:

    public TestContext TestContext
    {
        get
        {
            return testContextInstance;
        }
        set
        {
            testContextInstance = value;
        }
    }

    [TestInitialize]
    public void Init()
    {
        Console.WriteLine("Owner: "+testContextInstance.Properties["XOwner"]");
    }

    //Adding a custom named property for TestContext for all test cases
    [TestMethod, Owner("AAA"), TestProperty("XOwner", "BBB")]
    public void IsItRealTest()
    {...}

问题是,testContextInstance中只有XOwner属性,但不是OwnerAttribute,我不想用自定义的名称替换OwnerAttribute。

另一种选择是,通过Reflection解析OwnerAttribute以及TestContextInstance中的其他信息,但这是一个丑陋的解决方法。

有没有更好的解决方案,还是我应该坚持使用自定义命名属性解决方案?

0 个答案:

没有答案