栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

全网最全:Junit5的@Suite注解-上

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

全网最全:Junit5的@Suite注解-上

Junit5的Suite套件

最近在研究对应的suite套件,发现官网上有了对应的直接@Suite注解配合就可以使用套件,不需要再声明@RunWith(JUnitPlatform.class)
由于官网的解释不是很详细,在这里给大家写一篇比较详细的文章

  • 1)创建 maven 工程 XUnit,pom.xml中添加Junit5的Suite相关依赖
    pom.xml

    UTF-8
    11
    3.3
    3.0.0-M5
    5.8.1



    
        
            org.junit
            junit-bom
            ${junit.version}
            pom
            import
        


    




    
        org.junit.jupiter
        junit-jupiter
        test
    

    
        org.junit.platform
        junit-platform-suite
        test
    



    
        
            org.apache.maven.plugins
            maven-surefire-plugin
            ${maven.surefire.version}
        
        
            org.apache.maven.plugins
            maven-compiler-plugin
            ${maven.compiler.version}
            
                UTF-8
                ${java.version}
                ${java.version}
            
        
    

下面开始介绍对应套件执行的相关注解,如果项目是从Junit4进行迁移,那还是需要@RunWith(JUnitPlatform.class);如果是一个全新的junit5项目,建议直接使用@Suite注解进行,下面对应的所有注解进行一个示例

@Suite
注解作用
@Suite放在类上的注解;是Junit5平台的一个测试套件
@SelectClasses过滤出需要执行的测试类
@SelectPackages过滤出需要执行的测试包
@SuiteDisplayName自定义Suite套件的显示名称
@IncludePackages@SelectPackages搭配,过滤出需要执行的测试包
@SuiteDisplayName过滤出需要执行的个测试类
@SelectClasses过滤出需要执行的个测试类
@SelectClasses过滤出需要执行的个测试类
@SelectClasses过滤出需要执行的个测试类
测试类准备

com.packageA

OneTest
package com.packageA;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;


public class OneTest {

    @Test
    @Tag("SuiteTag")
    @Tag("SuiteTag1")
    void test1(){
        System.out.println("com.class5.packageA-----OneTest");

    }
}
TwoTest
package com.packageA;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;


public class TwoTest {

    @Test
    @Tag("SuiteTag")
    void test1(){
        System.out.println("com.class5.packageA-----TwoTest");

    }
}
com.packageB

OneTest
package com.packageB;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;


public class OneTest {

    @Test
    @Tag("SuiteTag")
    @Tag("SuiteTag1")
    void test1(){
        System.out.println("com.class5.packageB-----OneTest");

    }
}
TwoTest
package com.packageB;

import org.junit.jupiter.api.Test;


public class TwoTest {

    @Test
    void test1(){
        System.out.println("com.class5.packageB-----TwoTest");

    }
}

TreeTest
package com.packageB;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;


public class TreeTest {

    @Test
    @Tag("SuiteTag1")
    void test1(){
        System.out.println("com.class5.packageB-----TreeTest1");

    }
}
TestFour
package com.packageB;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;


public class TestFour {

    @Test
    @Tag("SuiteTag1")
    void test1(){
        System.out.println("com.class5.packageB-----TestFour");

    }

    @Test
    void test2(){
        System.out.println("com.class5.packageB-----TestFour---test2");

    }
    @Test
    void test3(){
        System.out.println("com.class5.packageB-----TestFour---test3");

    }
    @Test
    void test4(){
        System.out.println("com.class5.packageB-----TestFour---test4");

    }
}
测试套件组合 @Suite+@SelectClasses 过滤出需要执行的单个测试类
package class5.packageC;

import com.packageA.OneTest;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;


@Suite
@SelectClasses(OneTest.class )
public class RunSuite01Test {
}

过滤出需要执行的多个测试类
package class5.packageC;

import com.packageA.OneTest;
import com.packageB.TwoTest;
import org.junit.platform.suite.api.SelectClasses;
import org.junit.platform.suite.api.Suite;


@Suite
@SelectClasses({
        OneTest.class,
        TwoTest.class
})
public class RunSuite02Test {
}

@Suite+@SelectPackages 过滤出需要执行的单个测试包
package class5.packageC;

import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;


@Suite
@SuiteDisplayName("Test Suite")
@SelectPackages("com.packageA")
public class RunSuite03Test {
}

过滤出需要执行的多个测试包
package class5.packageC;

import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;


@Suite
@SuiteDisplayName("Test Suite04")
@SelectPackages({
        "com.packageA",
        "com.packageB"
})
public class RunSuite04Test {
}

@Suite+@SuiteDisplayName+* 自定义Suite套件的显示名称

在上面对应用例中已经生效

@Suite+@SelectPackages+@IncludePackages 配合使用过滤出需要执行的测试包
package class5.packageC;

import org.junit.platform.suite.api.IncludePackages;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;


@Suite
@SuiteDisplayName("Test Suite05")
@SelectPackages({
        "com"
})
@IncludePackages("com.packageB")
public class RunSuite05Test {
}

@Suite+@SelectPackages+@ExcludePackages 配合使用过滤出不需要执行的测试包
package class5.packageC;

import org.junit.platform.suite.api.ExcludePackages;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;


@Suite
@SuiteDisplayName("Test Suite06")
@SelectPackages({
        "com"
})
@ExcludePackages({
        "com.packageB"
})
public class RunSuite06Test {
}

@Suite+@SelectPackages+@IncludeClassNamePatterns 用正则匹配出来具体的class执行
package class5.packageC;

import org.junit.platform.suite.api.IncludeClassNamePatterns;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;


@Suite
@SuiteDisplayName("Test Suite07")
@SelectPackages({
        "com"
})
@IncludeClassNamePatterns({
        "com.packageB.*Test"
//        "com.packageB.*"
})
public class RunSuite07Test {
}

@Suite+@SelectPackages+@IncludeClassNamePatterns 用正则匹配出来具体的class哪些不被执行
package class5.packageC;

import org.junit.platform.suite.api.*;


@Suite
@SuiteDisplayName("Test Suite08")
@SelectPackages({
        "com"
})
@ExcludeClassNamePatterns("com.packageB.*Test$")
public class RunSuite08Test {
}

@Suite+@SelectPackages+@IncludeTags 运行指定的包下的指定标签的方法
package class5.packageC;

import org.junit.platform.suite.api.IncludeTags;
import org.junit.platform.suite.api.SelectPackages;
import org.junit.platform.suite.api.Suite;
import org.junit.platform.suite.api.SuiteDisplayName;


@Suite
@SuiteDisplayName("Test Suite Tag")
@SelectPackages({
        "com"
})
@IncludeTags({
//        "SuiteTag"
        "SuiteTag1"
})
public class RunSuite09Test {
}

@Suite+@SelectPackages+@ExcludeTags 运行指定的包下并且不包含指定标签的方法
package class5.packageC;

import org.junit.platform.suite.api.*;


@Suite
@SuiteDisplayName("Test Suite")
@SelectPackages({
        "com"
})
@ExcludeTags({
        "SuiteTag1"
})
public class RunSuite10Test {
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号