使用 JUnit5 測試套件,您可以運行分散到多個測試類和不同包中的測試。 JUnit5 提供了兩個注解:@SelectPackages和@SelectClasses以創建測試套件。 此外,您可以使用其他注解來過濾測試包,類甚至測試方法。
Table of ContentsProject Structure for Test classes and Suite
Create Test Suite with JUnit5 @SelectPackages
Create Test Suite with JUnit5 @SelectClasses
Filtering Packages with @IncludePackages and @ExcludePackages
Filtering Test Classes with @IncludeClassNamePatterns and @ExcludeClassNamePatterns
Filtering Tests with @IncludeTags and @ExcludeTags
測試類名稱必須遵循正則表達式模式^.*Tests?$。 這意味著測試類名稱必須以Test或Tests結尾。 例如UserMgmtTests,DeviceMgmtTest等。
西門子測試套件?1. 測試類和套件的項目結構
對于此示例,我使用以下項目結構。
JUnit5 測試套件項目結構
測壓套件、2. 使用@SelectPackages創建測試套件
@SelectPackages指定通過@RunWith(JUnitPlatform.class)運行測試套件時要選擇的包的名稱。
指定單個包
測試分析?將packageName作為參數傳遞給@SelectPackages注解。
@RunWith(JUnitPlatform.class)
@SelectPackages("com.howtodoinjava.junit5.examples.packageA")
public class JUnit5TestSuiteExample
{
}
@SelectPackages – 單個包示例
指定多個包
將參數中的程序包名稱作為字符串數組(在大括號{}中)傳遞給@SelectPackages注解。
@RunWith(JUnitPlatform.class)
@SelectPackages({"com.howtodoinjava.junit5.examples.packageA","com.howtodoinjava.junit5.examples.packageB"})
public class JUnit5TestSuiteExample
{
}
@SelectPackages – 多個包示例
請注意,如果我們在@SelectPackages注解中傳遞packageX,則將“此軟件包及其所有子軟件包中的測試類”用于測試套件。
3. 使用@SelectClasses創建測試套件
@SelectClasses指定通過@RunWith(JUnitPlatform.class)運行測試套件時要選擇的類。
指定單個類
將ClassName.class作為參數傳遞到@SelectClasses注解。
@RunWith(JUnitPlatform.class)
@SelectClasses( ClassATest.class )
public class JUnit5TestSuiteExample
{
}
@SelectClasses – 單個類示例
指定多個類
將參數中的類名稱作為數組(在大括號{}中)傳遞給@SelectClasses注解。
@RunWith(JUnitPlatform.class)
@SelectClasses( { ClassATest.class, ClassBTest.class, ClassCTest.class } )
public class JUnit5TestSuiteExample
{
}
@SelectClasses – 多個測試類示例
4. @IncludePackages和@ExcludePackages
我們了解到@SelectPackages也會導致其所有子包都被掃描以查找測試類。 如果要排除任何特定的子包,或包括任何包,則可以使用 @IncludePackages和@ExcludePackages注解。
@IncludePackages示例
@RunWith(JUnitPlatform.class)
@SelectPackages("com.howtodoinjava.junit5.examples")
@IncludePackages("com.howtodoinjava.junit5.examples.packageC")
public class JUnit5TestSuiteExample
{
}
這只會添加com.howtodoinjava.junit5.examples.packageC中的測試類(即ClassCTest)中的測試。
@ExcludePackages示例
@RunWith(JUnitPlatform.class)
@SelectPackages("com.howtodoinjava.junit5.examples")
@ExcludePackages("com.howtodoinjava.junit5.examples.packageC")
public class JUnit5TestSuiteExample
{
}
這將添加com.howtodoinjava.junit5.examples中測試類的測試,但不包括子包com.howtodoinjava.junit5.examples.packageC(即ClassATest和ClassBTest)中的所有測試類。
5. @IncludeClassNamePatterns和@ExcludeClassNamePatterns
很多時候,在選擇注解中包含所有包或測試類名稱是不可行的。 在這種情況下,您可能會提供更廣泛的包范圍,并通過 appy 篩選將哪些測試類包括在套件中或從套件中排除。
要指定要排除或包含的測試類名稱模式,可以使用@IncludeClassNamePatterns和@ExcludeClassNamePatterns注解。
@IncludeClassNamePatterns示例
包括名稱以ATest或ATests結尾的所有測試類。
@RunWith(JUnitPlatform.class)
@SelectPackages("com.howtodoinjava.junit5.examples")
@IncludeClassNamePatterns({"^.*ATests?$"})
public class JUnit5TestSuiteExample
{
}
@ExcludeClassNamePatterns示例
排除名稱以ATest或ATests結尾的所有測試類。
@RunWith(JUnitPlatform.class)
@SelectPackages("com.howtodoinjava.junit5.examples")
@ExcludeClassNamePatterns({"^.*ATests?$"})
public class JUnit5TestSuiteExample
{
}
您可以在上述注解中應用多個模式。 在多種模式的情況下,它們使用“OR”語義進行組合。 這意味著,如果類別的完全限定名稱與至少一種模式匹配,則該類別將包含在測試套件中/從測試套件中排除。
6. @IncludeTags和@ExcludeTags
在企業應用中,您可能已經標記了要在特定環境中運行的測試用例,例如開發或生產。 您還可以在測試套件中包含或排除基于這些標記的測試。
@IncludeTags示例
此測試套件將運行包com.howtodoinjava.junit5.examples(及其子包)中標記有production的所有測試。
@RunWith(JUnitPlatform.class)
@SelectPackages("com.howtodoinjava.junit5.examples")
@IncludeTags("production")
public class JUnit5TestSuiteExample
{
}
@ExcludeTags示例
此測試套件將排除包com.howtodoinjava.junit5.examples(及其子包)中所有帶有development標簽的測試。
@RunWith(JUnitPlatform.class)
@SelectPackages("com.howtodoinjava.junit5.examples")
@ExcludeTags("development")
public class JUnit5TestSuiteExample
{
}
顯然,有多種方法在 JUnit5 中創建測試套件,并且它強烈支持過濾測試套件中的測試。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态