西門子測試套件,JUnit5 測試套件示例

 2023-10-06 阅读 26 评论 0

摘要:使用 JUnit5 測試套件,您可以運行分散到多個測試類和不同包中的測試。 JUnit5 提供了兩個注解:@SelectPackages和@SelectClasses以創建測試套件。 此外,您可以使用其他注解來過濾測試包,類甚至測試方法。 Table of ContentsProject Struc

使用 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 中創建測試套件,并且它強烈支持過濾測試套件中的測試。

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/120973.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息