Bootstrap

原创 | TDD工具集:JUnit、AssertJ和Mockito (二十七)运行测试-在构建工具中运行测试

在构建工具中运行测试

1. Maven

Maven默认在阶段启动插件,执行项目中的所有测试。

1.1 插件和依赖

要支持JUnit平台,插件和插件的版本要在2.20.0以上,同时,测试类路径中必须包含至少一个实现。

如果只需要支持JUnit Jupiter,可以这样配置:


    
        
            maven-surefire-plugin
            2.22.2
        
        
            maven-failsafe-plugin
            2.22.2
        
    



    
    
        org.junit.jupiter
        junit-jupiter-api
        5.6.2
        test
    
    
        org.junit.jupiter
        junit-jupiter-engine
        5.6.2
        test
    
    

如果要支持JUnit 4编写的测试,要添加测试依赖项:



    
        
            maven-surefire-plugin
            2.22.2
        
        
            maven-failsafe-plugin
            2.22.2
        
    



    
    
        junit
        junit
        4.13
        test
    
    
        org.junit.vintage
        junit-vintage-engine
        5.6.2
        test
    
    

1.2 根据测试类文件名过滤测试

Maven Surefire插件默认会在项目测试类路径中扫描测试类,将全限定类名符合下面模式的测试类包含到测试中:

默认情况下,会忽略掉嵌套测试类。

可以配置插件的和规则,改变上面的默认值。例如:



    
        
            maven-surefire-plugin
            2.22.2
            
                
                  **/*.Test.java
                  **/*.Spec.java
                
                
                  ../Abstract*.java
                
            
        
    

1.3 根据过滤测试

可以根据测试类或测试方法的注解来包含或排除某些测试。可以通过Tag表达式来组合Tag。

                
                    org.apache.maven.plugins
                    maven-surefire-plugin
                    2.22.2
                    
                        
                            unit-test
                            
                                test
                            
                            test
                            
                                integration, acceptance
                            
                        
                        
                            integration-test
                            
                                test
                            
                            integration-test
                            
                                integration | acceptance
                            
                        
                    
                    
                        
                            **/*
                        
                    
                

1.4 配置测试参数

可以像下面的示例那样配置测试平台的全局测试参数,其效果等价于在文件中设置全局测试参数:



    
        
            maven-surefire-plugin
            2.22.2
            
                
                    
                        junit.jupiter.conditions.deactivate = *
                        junit.jupiter.extensions.autodetection.enabled = true
                        junit.jupiter.testinstance.lifecycle.default = per_class
                    
                
            
        
    

1.5 执行测试

在构建生命周期的阶段,默认绑定了插件,会自动执行项目中的单元测试。在进入终端命令解释器之后,在项目的根目录下执行:

mvn clean test

就会自动根据中的配置,执行项目中的全部或部分单元测试。

2. Gradle

从版开始,提供了对平台的直接支持。

2.1 配置依赖项

在文件中添加依赖项:

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter-api:5.6.2")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.6.2")
}

2.2 配置测试引擎

在节中指定使用:

test {
    useJUnitPlatform()
}

如果要根据注解对测试进行过滤,需要在内部指定和/或:

test {
    useJUnitPlatform {
        includeTags 'fast', 'smoke & feature-a'
        excludeTags 'slow', 'ci'
    }
}

还可以在内部指定包含或排除特定的测试引擎:

test {
    useJUnitPlatform {
        includeEngines 'junit-jupiter'
        excludeEngines 'junit-vintage'
    }
}

2.3 配置全局测试参数

还可以指定配置测试平台的全局测试参数:

test {
    // ...
    systemProperty 'junit.jupiter.conditions.deactivate', '*'
    systemProperties = [
        'junit.jupiter.extensions.autodetection.enabled': 'true',
        'junit.jupiter.testinstance.lifecycle.default': 'per_class'
    ]
    // ...
}

2.4 执行测试

在终端窗口中,进入项目的根目录,执行下面的命令:

gradle build

会根据中的配置,自动执行项目中全部或部分单元测试。

3. Ant

从版本开始,通过任务可以执行启动平台。从版开始,支持将测试到独立的中执行。

文件示例配置如下:


    
    



    

任务可以在类路径中找到所有测试类,交给测试引擎执行测试。

可以通过在中定义子任务的方式,让只执行指定的测试:


    
    

可以通过在中定义子任务的方式,让搜索单元测试:


    
    
        
            
        
        
            
        
    

完整文件例子:


    
    
    

    
        
    

    
        
    

    
        
    

    
        
        
           
           
        
    

    
        
            
            

            
            

            
                
                
            
            
                
                
                
            
        
    

运行下面的命令执行测试:

ant test

具体代码示例请戳这里↓↓↓

本文相关开源代码戳这里下载↓↓↓

这一节就讲到这里,下一节我们讲讲"运行测试中的在终端控制台中运行测试"

如果觉得有收获,点个【赞】鼓励一下呗!