我有以下代码来读取用于报告目的的测试用例组:
public void MethodSetup(ITestContext context, Method testMethod) {
log.info("CLEAR_OUTPUT");
Test t = testMethod.getAnnotation(Test.class);
testCaseGroups = t.groups();
// log.info(t.groups()[0]);//or however you want to use it.
}
当我在
等测试用例上设置组时,这非常有效@Test(Groups = "G1")
public void testCase1()
{}
但是当我在类级别定义组时它不起作用,并抛出nullpointer。
@Test(Groups="G1")
public class SampleClassTest
{
@Test(Groups = "G3")
public void testCase1()
{
}
}
我试图搜索谷歌但找不到任何解决方法。任何人都可以帮我解决这个问题。
答案 0 :(得分:0)
您是否在该测试类中没有@Test注释的其他方法?
如果是这样,那么当您使用@Test注释标记类时,只有该类具有注释,不是它的方法。
所以,如果你有这样的测试类
@Test(groups="G1")
class TestClass {
// this test method has no annotation,
// but it will run by TestNG because it is public
// and the class has @Test annotation
public void testMethod1(){...}
// this test method would have its own @Test annotation
@Test(groups="G2")
public void testMethod2(){...}
}
然后,MethodSetup
会在testMethod1
通过时抛出异常。
<强>编辑:强>
在获得没有@Test
注释的方法的情况下,您可以检索类级别@Test
注释并获取它的组。
答案 1 :(得分:0)
这可以在基类或测试用例类中使用。我将基类扩展到所有测试用例类,并且可以正常工作。我在基类中使用了此方法。
@BeforeClass(alwaysRun=true)
public void findClassgoup()
{
Test classTest = this.getClass().getAnnotation(Test.class);
if(null != classTest)
{
classLevelGroups= classTest.groups();
log.info("Classlevel group size : " + classLevelGroups.length);
}
if(null == classTest)
{
log.info("Test annotation on class retunred null");
}
}