有人能告诉我如何获得(预期)TestNG(套件)开始时所有测试/方法执行的计数吗?
您可以轻松获取所有测试方法的数量,但这并不会计算每个测试方法乘以数据提供者大小的数量(每个方法将计算一次,即使一个方法通过100次执行100次)数据提供者)。
除非有一个明显的解决方案,就像一个简单的API调用,关键似乎是从@Test注释中给出的数据提供者名称中找出数据提供者方法,我在这里问: How to get data provider method from TestNG data provider name?
一旦知道数据提供者方法是什么,就可以执行数据提供者,并计算数据集的数量。这看起来效率不高,但我们正在运行的测试不是单元测试,所以我不会太担心两次执行数据提供程序(与多长时间相比,这将是一个花生实际测试运行。)
答案 0 :(得分:0)
您可以使用listener并在其中拥有自己的计数逻辑。
答案 1 :(得分:0)
不幸的是,没有简单的方法可以直接在TestNG中获得以下任意一个-
这是解决方法,我确实获得了PASS百分比。 如您所见,运行摘要将打印以下内容,包括Dataprovider测试的数量-
Total tests run: 4, Passes: 1, Failures: 3, Skips: 0
所以测试用例总数=通过计数+失败计数+跳过计数 所以我写了这样的方法
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("################### TESTS STARTED ##################### ");
TestListenerAdapter tla = new TestListenerAdapter();
TestNG testng = new TestNG();
testng.setTestClasses(new Class[] { PassCSVDatatoDataProvider.class });
testng.addListener(tla);
testng.run();
float Totalcount = (tla.getFailedTests().size()+tla.getPassedTests().size()+tla.getSkippedTests().size());
float Passpercentage = (tla.getPassedTests().size()/Totalcount*100);
System.out.println("PASS PERCENTAGE - "+Passpercentage +"%");
System.out.println(tla.getFailedTests().size()+ " TESTS FAILED ! ");
System.out.println("################### END ##################### ");
}
TestNG控制台输出
################### TESTS STARTED #####################
=============================================== Command line suite Total tests run: 4, Passes: 1, Failures: 3, Skips: 0
===============================================
PASS PERCENTAGE - 25.0%
3 TESTS FAILED !
################### END #####################
答案 2 :(得分: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);
}
}