在测试之前的我的设置中,我想获得实际的测试方法,以便我可以获得附加到它的属性。我不想在每次测试开始时调用MethodBase.GetCurrentMethod()。我该如何解决这个问题?
[TestInitialize]
public void setUp()
{
MethodBase _Method = (MethodBase.GetCurrentMethod());
CurrentTestCaseId = GetAttribute(_Method);
Log.Info("Starting to execute Test Case ID: " +CurrentTestCaseId);
}
[TestMethod()]
[TestCategory("UserLogin")]
[TestId("TC26828")]
public void TestUserLogin()
{
GetPageFactory().GetLoginPage(Driver).logUserIntoApplication("bob", "bob");
}
答案 0 :(得分:0)
如果您使用的是.NET 4.5+,则可以使用CallerMemberNameAttribute
来帮助获取方法的名称。您可以使用它来获取MethodInfo
,这可以让您访问方法的属性。
public void Setup([CallerMemberName] string method = null)
{
Type type = typeof(MyTestClass);
MethodInfo info = type.GetMethod(name);
CurrentTestCaseId = GetAttribute(info);
Log.Info("Starting to execute Test Case ID: " +CurrentTestCaseId);
}
[TestId("someID")]
public void MyTest()
{
Setup(); //"method" should be automatically provided as "MyTest"
}
public TestIdAttribute GetAttribute(MethodInfo info)
{
return (TestIdAttribute)info.GetCustomAttributes(typeof(TestIdAttribute), false).First();
}