JUnit 测试监听器– JUnit RunListener示例
JUnit 测试监听器– JUnit RunListener
示例
监听器通常可以帮助监听我们感兴趣的事件。 这可能有几个原因。 例如,我们添加了监听器以添加特定的日志,在 Java GUI 编程中处理 UI 事件等。
JUnit 还支持通过RunListener
类执行测试时添加监听器。 该监听器可用于从改进日志记录到测试特定逻辑的各种目的。
1. JUnit RunListener
示例
1.1 JUnit 测试类
我们仅在下面举例说明两个测试类。 我们将监视为这些类编写的测试而打印的日志。
package com.howtodoinjava.junit;
import junit.framework.Assert;
import org.junit.Test;
public class TestFeatureOne {
@Test
public void testFirstFeature()
{
Assert.assertTrue(true);
}
}
package com.howtodoinjava.junit;
import junit.framework.Assert;
import org.junit.Ignore;
import org.junit.Test;
public class TestFeatureTwo {
@Test
public void testSecondFeature()
{
Assert.assertTrue(true);
}
@Test
@Ignore
public void testSecondFeatureIngored()
{
Assert.assertTrue(true);
}
}
1.2 JUnit 测试监听器
让我们编写运行监听器。 该监听器将扩展 JUnit 提供的RunListener
类。
我们可以完全不包含任何方法来覆盖任何数量的方法
RunListener
类。
package com.howtodoinjava.junit.suite;
import org.junit.runner.Description;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.junit.runner.notification.RunListener;
public class ExecutionListener extends RunListener
{
/**
* Called before any tests have been run.
* */
public void testRunStarted(Description description) throws java.lang.Exception
{
System.out.println("Number of tests to execute : " + description.testCount());
}
/**
* Called when all tests have finished
* */
public void testRunFinished(Result result) throws java.lang.Exception
{
System.out.println("Number of tests executed : " + result.getRunCount());
}
/**
* Called when an atomic test is about to be started.
* */
public void testStarted(Description description) throws java.lang.Exception
{
System.out.println("Starting execution of test case : "+ description.getMethodName());
}
/**
* Called when an atomic test has finished, whether the test succeeds or fails.
* */
public void testFinished(Description description) throws java.lang.Exception
{
System.out.println("Finished execution of test case : "+ description.getMethodName());
}
/**
* Called when an atomic test fails.
* */
public void testFailure(Failure failure) throws java.lang.Exception
{
System.out.println("Execution of test case failed : "+ failure.getMessage());
}
/**
* Called when a test will not be run, generally because a test method is annotated with Ignore.
* */
public void testIgnored(Description description) throws java.lang.Exception
{
System.out.println("Execution of test case ignored : "+ description.getMethodName());
}
}
2. JUnit 监听器执行
现在,让我们运行测试并观察监听器的输出。
package com.howtodoinjava.junit.suite;
import org.junit.runner.JUnitCore;
import com.howtodoinjava.junit.TestFeatureOne;
import com.howtodoinjava.junit.TestFeatureTwo;
public class ExecuteWithRunListener
{
public static void main(String[] args)
{
JUnitCore runner = new JUnitCore();
<strong>//Adding listener here</strong>
runner.addListener(new ExecutionListener());
runner.run(TestFeatureOne.class, TestFeatureTwo.class);
}
}
程序输出。
Number of tests to execute : 3
Starting execution of test case : testFirstFeature
Finished execution of test case : testFirstFeature
Starting execution of test case : testSecondFeature
Finished execution of test case : testSecondFeature
Execution of test case ignored : testSecondFeatureIngored
Number of tests executed : 2
显然,添加监听器可通过改进的日志记录支持对测试执行提供额外的控制。
评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果