我想将基于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中的其他信息,但这是一个丑陋的解决方法。
有没有更好的解决方案,还是我应该坚持使用自定义命名属性解决方案?