美文网首页
JUnit单元测试2—测试框架

JUnit单元测试2—测试框架

作者: 莫问君心 | 来源:发表于2019-09-26 14:54 被阅读0次

    JUnit 测试框架(JUnit 3以上版本)的主要特性如下:

    • TestCase 测试工具
    • Test Suite 测试套件
    • Test Runner 测试运行器

    TestCase 测试工具

    JUnit 3中,使用TestCase可确保测试方法能够在共享且固定的环境中运行,以保证测试结果的可重复性。
    继承TestCase即可作为测试类,测试类中的所有public方法(除覆盖父类中的方法),都会被作为测试方法执行。

    测试类可覆盖TestCase父类中的以下两个方法:

    • setUp() 在每个测试方法执行前会被自动调用(可使用JUnit 4中的@Before替代)。
    • tearDown() 在每个测试方法执行后会被自动调用(可使用JUnit 4中的@After替代)。

    注意: TestCase作为JUnit 3中提供的测试工具,其功能在JUnit 4中仍然兼容。
    但TestCase所有功能都可被JUnit 4提供的注解替代,而且其易用性、灵活性都不如注解。
    本文只是对其进行介绍,并非推荐使用TestCase。

    一个简单的TestCase使用示例:

    import junit.framework.TestCase;
    
    public class HelloTest extends TestCase {
        private int value = 0;
    
        public void setUp() {
            value = 1;
        }
    
        public void tearDown() {
            value = 0;
        }
    
        public void testA() {
            assertTrue(value == 1);
            value = 2;
        }
    
        public void testB() {
            assertTrue(value == 2);
        }
    }
    

    使用mvn test命令执行测试:

    -------------------------------------------------------
     T E S T S
    -------------------------------------------------------
    Running HelloTest
    Tests run: 2, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.082 sec <<< FAILURE!
    testB(HelloTest)  Time elapsed: 0.01 sec  <<< FAILURE!
    
    Results :
    
    Failed tests:   testB(HelloTest) : value was reset by setUp
    Tests run: 2, Failures: 1, Errors: 0, Skipped: 0
    

    Test Suite 测试套件

    测试套件可以将多个测试类捆绑在一起按照顺序执行。
    测试套件使用方式:

    import org.junit.runner.RunWith;
    import org.junit.runners.Suite;
    import org.junit.runners.Suite.SuiteClasses;
    
    @RunWith(Suite.class)
    @SuiteClasses({HelloTest1.class, HelloTest2.class, HelloTest3.class})
    public class HelloTestSuite {
        /* empty class */
    }
    

    注意:单个测试类中存在的多个测试方法时,所有测试方法都会被执行。

    Test Runner 测试运行器

    测试运行器用于运行测试类,并返回测试结果。

    public class HelloTestRunner {
        public static void main(String[] args) {
            Result result = JUnitCore.runClasses(HelloTest.class);
            if (result.getFailureCount() > 0) {
                for (Failure failure : result.getFailures()) {
                    System.out.println("Failure message:" + failure.toString());
                }
            }
            System.out.println("Test was successful:" + result.wasSuccessful());
        }
    }
    

    运行结果:

    Failure message:testB(HelloTest): value was reset by setUp
    Test was successful:false
    

    上一篇:JUnit单元测试1—入门基础
    下一篇:JUnit单元测试3—参数化测试

    相关文章

      网友评论

          本文标题:JUnit单元测试2—测试框架

          本文链接:https://www.haomeiwen.com/subject/blghyctx.html