高效转换Excel表格为Word表格的方法与技巧探索
654
2022-05-29
以下示例提供了在JUnit Jupiter中编写测试的最少要求。
package com.example.util; public class Calculator { public int add(int number1, int number2) { return number1 + number2; } }
package com.example; import com.example.util.Calculator; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; public class MyFirstJUnitJupiterTests { private final Calculator calculator = new Calculator(); @Test void addition() { assertEquals(2, calculator.add(1, 1)); } }
1.注解总览
JUnit Jupiter支持以下用于配置测试和拓展框架的注解。除非另外说明,所有核心注解都位于org.junit.jupiter.api包中,这个包在junit-jupiter-api模块中。
2.元注解和组合注解
JUnit Jupiter注解可以用作元注解。意味着可以定义自己的组合注解,该注解将自动继承其元注解的语义。
比如,你可以创建名的为@Tag(“fast”)的自定义组合注解,而不是整个代码库中复制和粘贴@Tag(“fast”),如下所示。然后@Fast可以用作@Tag(“fast”)的直接替代品。
import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.junit.jupiter.api.Tag; @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Tag("fast") public @interface Fast { }
下面这个@Test方法描述了@Fast注解的用法
@Fast @Test void myFastTest(){ //... }
3.测试类和方法
测试类:任何包含至少一个测试方法的顶级类、静态成员类或@Nested类。测试类不能是抽象的,并且必须具有单个构造函数。
测试方法:使用@Test、@RepeatedTest、@ParameerizedTest、@TestFactory或@TestTemplate直接注解或元注解的任何实例方法。
生命周期方法:使用@BeforeAll、@AfterAll、@BeforeEach或@AfterEach直接注解或元注解的任何方法。
测试方法和生命周期方法可以在当前测试类中本地声明,从超类继承,也可以从接口继承(参考测试接口和默认方法)。此外,测试方法和生命周期方法不得抽象,并且不得返回值(返回值所需的@TestFactory方法除外)。
类和方法的可见性:测试类、测试方法和生命周期方法不要求public,但不能为private。通常建议省略测试类、测试方法和生命周期方法的public修饰符,除非有技术原因这样做。例如,当一个测试类被另一个包中的测试类拓展时。类和方法加上public的另一个技术原因是,在使用Java模块系统时,简化模块路径上的测试。
以下的测试类演示了使用@Test方法和所有受支持的生命周期方法。更多信息在测试执行顺序和回调包装行为。
例子:设定为测试不通过
import org.junit.jupiter.api.*; import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assumptions.*; class StandardTests { @BeforeAll static void initAll() { } @BeforeEach void init() { } @Test void succeedingTest() { } @Test void failingTest() { fail("a failing test"); } @Test @Disabled("for demonstration purposes") void skippedTest(){ //not executed } @Test void abortedTest() { assumeTrue("abc".contains("Z")); fail("test should have been aborted"); } @AfterEach void tearDown() { } @AfterAll static void tearDownAll() { } }
输出结果
例子:设定为测试通过
import org.junit.jupiter.api.*; import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assumptions.*; class StandardTests { @BeforeAll static void initAll() { } @BeforeEach void init() { } @Test void succeedingTest() { } @Test void failingTest() { //fail("a failing test"); } @Test @Disabled("for demonstration purposes") void skippedTest(){ //not executed } @Test void abortedTest() { assumeTrue("abc".contains("c")); //fail("test should have been aborted"); } @AfterEach void tearDown() { } @AfterAll static void tearDownAll() { } }
输出结果
Java junit
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。