一、JUnit注解(Annotations)
JUnit 是 Java 中用于编写和运行单元测试的框架。JUnit 提供了许多注解,用于控制测试的执行顺序、测试生命周期、断言结果等。以下是一些常用的 JUnit 注解及其作用:
1. @Test
用于标记一个方法是测试方法。
@Test
public void testAddition() {
int result = 1 + 1;
assertEquals(2, result); // 断言结果是否为 2
}
2. @BeforeEach
在每个测试方法执行前运行。常用于初始化测试环境。
@BeforeEach
public void setup() {
System.out.println("Before each test");
}
3. @AfterEach
在每个测试方法执行后运行。常用于清理测试环境。
@AfterEach
public void tearDown() {
System.out.println("After each test");
}
4. @BeforeAll
在所有测试方法执行之前运行一次,通常用于静态初始化。
@BeforeAll
public static void init() {
System.out.println("Before all tests");
}
5. @AfterAll
在所有测试方法执行之后运行一次,通常用于释放资源。
@AfterAll
public static void cleanup() {
System.out.println("After all tests");
}
6. @Disabled
用于禁用某个测试方法或类。
@Test
@Disabled("Test is under development")
public void testDisabled() {
// 该测试方法不会执行
}
7. @ParameterizedTest
用于参数化测试,允许为测试方法传递多组参数。
@ParameterizedTest
@ValueSource(ints = {1, 2, 3, 4})
public void testWithParameters(int number) {
assertTrue(number > 0);
}
8. @Tag
用于对测试进行分类,可以通过标签选择性地运行测试。
@Test
@Tag("fast")
public void fastTest() {
// 快速测试
}
枚举
1. 定义和使用
- 枚举用于定义一组固定的常量集合。
- 使用
enum
关键字定义枚举类型。
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
}
Day day = Day.MONDAY; // 使用枚举
2. 常用方法
values()
:获取所有枚举常量。ordinal()
:返回枚举常量的序号(从0开始)。valueOf(String name)
:根据名称获取枚举值。
for (Day d : Day.values()) {
System.out.println(d + " at index " + d.ordinal());
}
Day friday = Day.valueOf("FRIDAY");
3. 带属性和方法
枚举可以包含字段和方法,每个常量可以有独特的属性和行为。
public enum TrafficLight {
RED("Stop"), GREEN("Go"), YELLOW("Caution");
private final String action;
TrafficLight(String action) {
this.action = action;
}
public String getAction() {
return action;
}
}
System.out.println(TrafficLight.RED.getAction()); // Stop
4. 用于switch
语句
switch (day) {
case MONDAY -> System.out.println("Start of the week");
case FRIDAY -> System.out.println("End of the workweek");
default -> System.out.println("Middle of the week");
}
5. 实现抽象方法
每个枚举常量可以实现抽象方法。
public enum Operation {
ADD {
public int apply(int a, int b) { return a + b; }
},
SUBTRACT {
public int apply(int a, int b) { return a - b; }
};
public abstract int apply(int a, int b);
}
System.out.println(Operation.ADD.apply(2, 3)); // 5
6. 实际应用场景
- 表示状态或常量(如
Day
、Color
、HttpStatus
)。 - 参数验证(避免魔法值)。
- 不同枚举常量实现不同行为。
优点:
- 类型安全:防止非法值。
- 清晰性:避免硬编码常量,提高可读性。
- 功能扩展:支持字段、方法、抽象行为等。
喜欢这期内容的话,别忘了点个赞,关注博主,这样就不会错过任何更新啦!还有,收藏一下,方便以后回顾哦!