先看代码
public class JunitTest1 {
private Collection collection;
@BeforeClass
public static void oneTimeSetUp() {
// one-time initialization code
System.out.println("@BeforeClass - oneTimeSetUp");
}
@AfterClass
public static void oneTimeTearDown() {
// one-time cleanup code
System.out.println("@AfterClass - oneTimeTearDown");
}
@Before
public void setUp() {
collection = new ArrayList();
System.out.println("@Before - setUp");
}
@After
public void tearDown() {
collection.clear();
System.out.println("@After - tearDown");
}
@Test
public void testEmptyCollection() {
assertTrue(collection.isEmpty());
System.out.println("@Test - testEmptyCollection");
}
@Test
public void testOneItemCollection() {
collection.add("itemA");
assertEquals(1, collection.size());
System.out.println("@Test - testOneItemCollection");
}
}
其中要注意的是 @BeforeClass和 @afterclass要在静态方法中使用,它们的含义为 :
1) 在一个类中只可以出现一次
2) @BeforeClass父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。
@AfterClass 父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行
3) 必须声明为public static
4) 所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会
5) @BeforeClass 和 @AfterClass 对于那些比较“昂贵”的资源的分配或者释放来说是很有效的
分享到:
相关推荐
通过重写`before()`和`after()`方法,我们可以在这两个方法中进行资源的初始化和释放,确保测试的隔离性。 对于更复杂的文件系统操作,可能需要自定义规则。比如,我们想监控文件系统的改变,可以实现`org.junit....
4. **测试注解的扩展**:除了基本的`@Test`,JUnit还提供了其他注解,如`@Before`和`@After`,分别在每个测试方法之前和之后执行,常用于初始化和清理工作。`@BeforeClass`和`@AfterClass`则在整个测试类的生命周期...
在 jUnit4 中,我们可以使用 @Test、@Before、@After 等 Annotation 来描述测试用例。 @Test Annotation @Test Annotation 用于描述测试方法,该方法将被 jUnit4 执行。例如: ```java public class ...
org.junit.After.class org.junit.AfterClass.class org.junit.Assert.class org.junit.Assume.class org.junit.Before.class org.junit.BeforeClass.class org.junit.ComparisonFailure.class org.junit.Ignore....
@RunWith 指定测试类使用的某个运行器参数SpringJUnit4ClassRunner.class @Parameters 指定参数类的参数数据集合 @Rule 允许灵活添加或重新定义测试类中的每个测试方法的行为 @FixMethodOrder 指定测试方法的执行...
2. **继承TestCase类**:`class Junit3Demo extends TestCase { ... }` 3. **命名测试方法**:测试方法必须以`test`开头,例如`public void test1() { ... }` 4. **使用assert方法**:通过`assertTrue`, `...
而在 JUnit4 中,使用 `@Before` 和 `@After` 注解替代了这些方法。 #### 四、JUnit4 实践案例 下面是一个使用 JUnit4 编写的测试类示例: ```java import org.junit.*; public class AddOperationTest { @...
JUnit Jupiter是JUnit5的核心,负责定义新的API和注解,如@Test、@BeforeEach、@AfterEach等,用于编写测试用例。JUnit Vintage则兼容了JUnit4的API,使得老版本的测试代码可以在JUnit5环境中继续运行。 在Java项目...
JUnit 4还引入了其他注解,如@BeforeClass(在所有测试方法之前运行一次)、@AfterClass(在所有测试方法之后运行一次)、@Before和@After(每个测试方法前后运行)等,提高了测试的灵活性。 此外,JUnit支持参数化...
- 可以通过`@RunWith(Suite.class)`和`@Suite.SuiteClasses({TestClass1.class, TestClass2.class})`组合,将多个测试类组织成一个测试套件,一次性运行。 6. **测试超时**: - 使用`@Test(timeout = 1000)`可以...
为了使测试更完整,我们可以使用`@Before`和`@After`注解来定义在每个测试方法之前和之后执行的设置和清理操作。例如: ```java @Before public void setUp() { // 初始化数据或环境 } @After public void ...
6. **生命周期管理**:引入了@BeforeEach和@AfterEach,分别在每个测试之前和之后执行,替代了JUnit4的@Before和@After。另外,还有@BeforeEachTemplate、@AfterEachTemplate等,用于在一组测试之间共享设置和清理...
3. **@Before和@After注解**:这两个不是JUnit 3.8的特性,但在描述中提到,所以有必要对比一下。在JUnit 3中,初始化和清理工作是通过`setUp()`和`tearDown()`方法实现的,它们会在每个测试方法之前和之后自动调用...
在JUnit4中,你可以通过注解(如`@Test`、`@Before`、`@After`、`@Ignore`等)来声明和控制测试行为。`@Test`用于标记测试方法,`@Before`和`@After`则分别用于在每个测试方法之前和之后执行初始化和清理操作。`@...
在JUnit5(也称为JUnit Platform)中,引入了更多的增强特性,如条件注解(如`@EnabledIf`, `@DisabledIf`)、异步测试支持、扩展的测试生命周期注解(如`@BeforeEach`, `@AfterEach`, `@AfterAll`, `@BeforeAll`)...
1. 使用`@RunWith(SpringRunner.class)`和`@ContextConfiguration`设置Spring测试环境。 2. `@Autowired`注解注入需要测试的bean。 3. 编写`@Test`注解的测试方法,结合断言进行验证。 4. 关注测试的隔离性,可能...
3. **测试生命周期**:增加了诸如`@BeforeEach`和`@AfterEach`这样的生命周期方法,替代了JUnit4中的`@Before`和`@After`。 4. **测试工厂**:使用`@Factory`注解可以创建动态测试用例。 5. **条件测试**:`@...
这里,`@Before`和`@After`注解分别替代了JUnit3中的`setUp`和`tearDown`方法,它们会在每个测试方法执行前和执行后运行,用于准备测试环境和清理工作。 JUnit4还提供了一些其他有用的注解,例如: - `@BeforeClass...
Junit提供了丰富的注解,如@Test、@Before、@After等,使得测试代码更加简洁且易于理解。 二、Junit的基本结构 一个基本的Junit测试类通常包含一系列公共的无参数方法,每个方法代表一个测试用例。这些方法以@Test...