Java JUnitResult-获取已执行测试的列表

Java JUnitResult-获取已执行测试的列表,java,junit,Java,Junit,我在一个相对简单的工作流中使用JUnit JUnitCore runner = new JUnitCore(); m_junitResult = runner.run(m_junitRequest); 我想要实现的是,一旦执行结束,就可以获得所有已执行测试的列表及其描述您可以使用org.junit.runner.Result来获得成功测试运行的计数 来自博士 结果收集并汇总运行多个测试的信息。由于预期测试会正确运行,因此成功的测试只会记录在运行的测试计数中 如果有任何测试失败,那么您可以使用o

我在一个相对简单的工作流中使用JUnit

JUnitCore runner = new JUnitCore();
m_junitResult = runner.run(m_junitRequest);

我想要实现的是,一旦执行结束,就可以获得所有已执行测试的列表及其描述

您可以使用
org.junit.runner.Result
来获得成功测试运行的计数

来自博士

结果收集并汇总运行多个测试的信息。由于预期测试会正确运行,因此成功的测试只会记录在运行的测试计数中

如果有任何测试失败,那么您可以使用
org.junit.runner.notification.Failure

来自博士

Failure包含失败测试的描述以及运行该测试时引发的异常。在大多数情况下,描述将是单个测试。但是,如果在构造测试时遇到问题(例如,如果BeforeClass方法不是静态的),那么它可能描述的不是单个测试

示例代码

// From http://www.tutorialspoint.com/

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
public static void main(String[] args) {
  Result result = JUnitCore.runClasses(TestJunit.class);
  for (Failure failure : result.getFailures()) {
     System.out.println(failure.toString());
  }
  System.out.println(result.getRunCount());
}
} 

您可以使用
org.junit.runner.Result
获取成功测试运行的计数

来自博士

结果收集并汇总运行多个测试的信息。由于预期测试会正确运行,因此成功的测试只会记录在运行的测试计数中

如果有任何测试失败,那么您可以使用
org.junit.runner.notification.Failure

来自博士

Failure包含失败测试的描述以及运行该测试时引发的异常。在大多数情况下,描述将是单个测试。但是,如果在构造测试时遇到问题(例如,如果BeforeClass方法不是静态的),那么它可能描述的不是单个测试

示例代码

// From http://www.tutorialspoint.com/

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;

public class TestRunner {
public static void main(String[] args) {
  Result result = JUnitCore.runClasses(TestJunit.class);
  for (Failure failure : result.getFailures()) {
     System.out.println(failure.toString());
  }
  System.out.println(result.getRunCount());
}
} 

我是在Junit的RunListner的帮助下完成的

在运行Junit套件或单个类时,请确保将侦听器添加到其中

// AutomationTestSuites - contains my all Junit test classes

 Class cls= AutomationTestSuites.class;


JUnitCore jUnitCore = new JUnitCore();
CustomRunListener customRunListener = new CustomRunListener();
jUnitCore.addListener(customRunListener);

Request request = Request.aClass(cls);
Result result = jUnitCore.run(request);
下面是我的听众

import org.junit.runner.Description;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
import com.dto.TestSuiteDetails;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.concurrent.TimeUnit;
import java.lang.Exception;

public class CustomRunListener extends RunListener{

    private Map<String,TestSuiteDetails> map = new LinkedHashMap<>();

    private long testSuiteStartTime;
    private long testSuiteElapsedTime;
    private int ignoredCount;


    public void testRunStarted(Description description) throws Exception {
        testSuiteStartTime = System.currentTimeMillis();
    }


    public void testStarted(Description description) throws Exception {
        TestSuiteDetails testSuiteDetails = new TestSuiteDetails();
        testSuiteDetails.setTestCaseName(description.getMethodName());
        String[]  arr = description.getTestClass().getName().split("\\.");
        String name = arr[arr.length-1];
        testSuiteDetails.setTestClassName(name);
        String[]  arr1 = name.split("_");
        String testSuite = arr1[0];
        testSuiteDetails.setTestSuiteNmae(testSuite);
        testSuiteDetails.setTestStatus("Passed");
        testSuiteDetails.setStartTime(System.currentTimeMillis());
        map.put(description.getMethodName(),testSuiteDetails);
    }

    public void testFinished(Description description) throws Exception {
        TestSuiteDetails testSuiteDetails= null;
        if(map.containsKey(description.getMethodName())){
            testSuiteDetails = map.get(description.getMethodName());
            testSuiteDetails.setElaspsedTime(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()-testSuiteDetails.getStartTime()));
        }
        map.put(description.getMethodName(),testSuiteDetails);
    }

    public void testRunFinished(org.junit.runner.Result result) throws Exception {
        testSuiteElapsedTime = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()-testSuiteStartTime);
    }

    public void testFailure(Failure failure) throws Exception {
        TestSuiteDetails testSuiteDetails= null;
        if(map.containsKey(failure.getDescription().getMethodName())){
            testSuiteDetails = map.get(failure.getDescription().getMethodName());
        }else{
            testSuiteDetails = new TestSuiteDetails();
        }
        testSuiteDetails.setTestCaseName(failure.getDescription().getMethodName());
        testSuiteDetails.setTestDescription(failure.getException().toString());
        testSuiteDetails.setTestStatus("Failed");
        map.put(failure.getDescription().getMethodName(),testSuiteDetails);
    }

    public void testIgnored(Description description) throws Exception {
        TestSuiteDetails testSuiteDetails= null;
        if(map.containsKey(description.getMethodName())){
            testSuiteDetails = map.get(description.getMethodName());
        }else{
            testSuiteDetails = new TestSuiteDetails();
            testSuiteDetails.setTestCaseName(description.getMethodName());
            String[]  arr = description.getTestClass().getName().split("\\.");
            String name = arr[arr.length-1];
            testSuiteDetails.setTestClassName(name);
            String[]  arr1 = name.split("_");
            String testSuite = arr1[0];
            testSuiteDetails.setTestSuiteNmae(testSuite);
            ignoredCount++;
        }


        testSuiteDetails.setTestStatus("Ignored");
        map.put(description.getMethodName(),testSuiteDetails);
    }

    public int getIgnoredCount() {
        return ignoredCount;
    }

    public void setIgnoredCount(int ignoredCount) {
        this.ignoredCount = ignoredCount;
    }

    public Map<String, TestSuiteDetails> getMap() {
        return map;
    }

    public long getTestSuiteStartTime() {
        return testSuiteStartTime;
    }

    public long getTestSuiteElapsedTime() {
        return testSuiteElapsedTime;
    }
}
现在,在添加侦听器之后,您可以稍后简单地使用它

HashMap<String, TestSuiteDetails> myTestResultMap = customRunListener.getMap();
HashMap myTestResultMap=customRunListener.getMap();

我是在Junit的RunListner的帮助下完成的

在运行Junit套件或单个类时,请确保将侦听器添加到其中

// AutomationTestSuites - contains my all Junit test classes

 Class cls= AutomationTestSuites.class;


JUnitCore jUnitCore = new JUnitCore();
CustomRunListener customRunListener = new CustomRunListener();
jUnitCore.addListener(customRunListener);

Request request = Request.aClass(cls);
Result result = jUnitCore.run(request);
下面是我的听众

import org.junit.runner.Description;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
import com.dto.TestSuiteDetails;
import java.util.Map;
import java.util.LinkedHashMap;
import java.util.concurrent.TimeUnit;
import java.lang.Exception;

public class CustomRunListener extends RunListener{

    private Map<String,TestSuiteDetails> map = new LinkedHashMap<>();

    private long testSuiteStartTime;
    private long testSuiteElapsedTime;
    private int ignoredCount;


    public void testRunStarted(Description description) throws Exception {
        testSuiteStartTime = System.currentTimeMillis();
    }


    public void testStarted(Description description) throws Exception {
        TestSuiteDetails testSuiteDetails = new TestSuiteDetails();
        testSuiteDetails.setTestCaseName(description.getMethodName());
        String[]  arr = description.getTestClass().getName().split("\\.");
        String name = arr[arr.length-1];
        testSuiteDetails.setTestClassName(name);
        String[]  arr1 = name.split("_");
        String testSuite = arr1[0];
        testSuiteDetails.setTestSuiteNmae(testSuite);
        testSuiteDetails.setTestStatus("Passed");
        testSuiteDetails.setStartTime(System.currentTimeMillis());
        map.put(description.getMethodName(),testSuiteDetails);
    }

    public void testFinished(Description description) throws Exception {
        TestSuiteDetails testSuiteDetails= null;
        if(map.containsKey(description.getMethodName())){
            testSuiteDetails = map.get(description.getMethodName());
            testSuiteDetails.setElaspsedTime(TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()-testSuiteDetails.getStartTime()));
        }
        map.put(description.getMethodName(),testSuiteDetails);
    }

    public void testRunFinished(org.junit.runner.Result result) throws Exception {
        testSuiteElapsedTime = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis()-testSuiteStartTime);
    }

    public void testFailure(Failure failure) throws Exception {
        TestSuiteDetails testSuiteDetails= null;
        if(map.containsKey(failure.getDescription().getMethodName())){
            testSuiteDetails = map.get(failure.getDescription().getMethodName());
        }else{
            testSuiteDetails = new TestSuiteDetails();
        }
        testSuiteDetails.setTestCaseName(failure.getDescription().getMethodName());
        testSuiteDetails.setTestDescription(failure.getException().toString());
        testSuiteDetails.setTestStatus("Failed");
        map.put(failure.getDescription().getMethodName(),testSuiteDetails);
    }

    public void testIgnored(Description description) throws Exception {
        TestSuiteDetails testSuiteDetails= null;
        if(map.containsKey(description.getMethodName())){
            testSuiteDetails = map.get(description.getMethodName());
        }else{
            testSuiteDetails = new TestSuiteDetails();
            testSuiteDetails.setTestCaseName(description.getMethodName());
            String[]  arr = description.getTestClass().getName().split("\\.");
            String name = arr[arr.length-1];
            testSuiteDetails.setTestClassName(name);
            String[]  arr1 = name.split("_");
            String testSuite = arr1[0];
            testSuiteDetails.setTestSuiteNmae(testSuite);
            ignoredCount++;
        }


        testSuiteDetails.setTestStatus("Ignored");
        map.put(description.getMethodName(),testSuiteDetails);
    }

    public int getIgnoredCount() {
        return ignoredCount;
    }

    public void setIgnoredCount(int ignoredCount) {
        this.ignoredCount = ignoredCount;
    }

    public Map<String, TestSuiteDetails> getMap() {
        return map;
    }

    public long getTestSuiteStartTime() {
        return testSuiteStartTime;
    }

    public long getTestSuiteElapsedTime() {
        return testSuiteElapsedTime;
    }
}
现在,在添加侦听器之后,您可以稍后简单地使用它

HashMap<String, TestSuiteDetails> myTestResultMap = customRunListener.getMap();
HashMap myTestResultMap=customRunListener.getMap();

这并没有回答我的问题,我希望能够获得测试名称,而不是计数,我已经有了计数。如果您想要测试名称,您必须实现一个侦听器,您可以检查这些链接和。对于,请根据您的需要编辑您的问题。对于您的信息,获取所有已执行测试的列表可以以多种方式进行解释,我解释为您需要
结果
失败
。你说你已经数到了,但在你的问题中没有提到。无论如何,编辑这个问题完全由你们来决定。你在问题中提供的信息越多,答案就会越精确。这并不能回答我的问题,我希望能够得到测试名称,而不是计数,我已经有了计数。如果你想要测试名称,你必须实现一个侦听器,你可以检查这些链接和。对于,请根据您的需要编辑您的问题。对于您的信息,获取所有已执行测试的列表可以以多种方式进行解释,我解释为您需要
结果
失败
。你说你已经数到了,但在你的问题中没有提到。无论如何,编辑这个问题完全由你们来决定。你在问题中提供的信息越多,答案就越准确。