@BeforeClass和@AfterClass是JUnit4中的两个注解,用于在测试类中指定在所有测试方法之前和之后执行的方法。它们的区别如下:

1. 执行时机

@BeforeClass: 在所有测试方法执行之前执行的方法。

@AfterClass: 在所有测试方法执行之后执行的方法。

2. 调用次数

@BeforeClass: 在测试类加载时只会被调用一次。

@AfterClass: 在测试类加载之后只会被调用一次。

3. 静态方法

@BeforeClass: 被注解的方法必须是静态(static)方法。

@AfterClass: 被注解的方法必须是静态(static)方法。

4. 例子

public class ExampleTest {
    @BeforeClass
    public static void setUp() {
        // 在所有测试方法之前执行的设置操作
    }
    
    @Test
    public void testMethod1() {
        // 测试方法1
    }
    
    @Test
    public void testMethod2() {
        // 测试方法2
    }
    
    @AfterClass
    public static void tearDown() {
        // 在所有测试方法之后执行的清理操作
    }
}

上面的例子中,setUp()方法被@BeforeClass注解标记,并且是一个静态方法。它将在所有测试方法之前执行,用来进行测试前的设置操作。tearDown()方法被@AfterClass注解标记,并且也是一个静态方法。它将在所有测试方法执行完之后执行,用来进行测试后的清理操作。

总结:@BeforeClass和@AfterClass是JUnit4中两个重要的注解,用来在测试类中指定在所有测试方法之前和之后执行的方法。其中,@BeforeClass被标记的方法将在所有测试方法执行之前被调用一次,而@AfterClass被标记的方法将在所有测试方法执行完之后被调用一次。此外,被注解的方法必须是静态方法。可以使用这两个注解来进行测试前的设置和测试后的清理操作。