如何从另一个java类中找到TestNG类中有多少个测试用例

时间:2016-03-15 05:36:24

标签: java junit testng

我有两个班级

public class xyzTest {
@Test
public void TestP1TUNG557(){
    TestHelper.excuteTestcase(TUNG557);
    Assert.assertTrue(TestHelper.TestResult);
}
@Test
public void TestP1TUNG559(){
    TestHelper.excuteTestcase(TUNG559);
    Assert.assertTrue(TestHelper.TestResult);
}
@Test
public void TestP0TUNG558(){
    TestHelper.excuteTestcase(TUNG558);
    Assert.assertTrue(TestHelper.TestResult);
}
}

public class TestHelper {
 public excuteTestcase(String abc)
{
  process(abc)
}
int TotalTescase(String pattern, Class testNGclass)
 {
   How to write here..? plz help
 }
}

假设如果调用了TotalTescase(String TestPO,Class xyzTest),它应该返回1,如果调用了TotalTescase(String TestP1,Class xyzTest),它应该返回2。 如果这可以获得这样的总测试用例,请帮助我或给我一些链接 我搜索过但我找不到。帮助我

2 个答案:

答案 0 :(得分:3)

您可以使用反射技术找出所提供类中的匹配方法,如:

     public int TotalTescase(String pattern, Class<?> testNGclass) throws ClassNotFoundException
    {

        int count = 0;

        testNGclass.getClass();
        Class<?> className = Class.forName(testNGclass.getName()); 

        Method[] methods = className.getMethods();

        for(int i=0; i<methods.length; i++)
        {
            String methodName = methods[i].getName();
            System.out.println("Method Name: "+methodName);

            if(methodName.contains(pattern))
            {
                count++;
            }
        }

        return count;

    }

答案 1 :(得分:0)

在试运行中尝试实现 IInvokedMethodListener 并覆盖 beforeInvocation 方法

public class Test implements IInvokedMethodListener
{
static int testcount=0;
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
        
        testcount=testcount+method.getTestMethod().getInvocationCount();
}

@Override
public void onStart(ISuite suite) {
    // TODO Auto-generated method stub
    
}


@Override
public void onFinish(ISuite suite) {
    System.out.println(testcount);
    
}
}