一.基础知识
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:
@Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
@Test:测试方法,在这里可以测试期望异常和超时时间
@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
@Ignore:忽略的测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
每一个测试方法的调用顺序为:
@Before -> @Test -> @After;
二.实例
package com.bijian.study; import org.junit.After; import org.junit.AfterClass; import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JUnit4Test { @Before public void before() { System.out.println("@Before"); } @Test /** *Mark your test cases with @Test annotations. *You don’t need to prefix your test cases with “test”. *tested class does not need to extend from “TestCase” class. */ public void test() { System.out.println("@Test"); Assert.assertEquals(5 + 5, 10); } @Ignore @Test public void testIgnore() { System.out.println("@Ignore"); } @Test(timeout = 50) public void testTimeout() { System.out.println("@Test(timeout = 50)"); Assert.assertEquals(5 + 5, 10); } @Test(expected = ArithmeticException.class) public void testExpected() { System.out.println("@Test(expected = Exception.class)"); throw new ArithmeticException(); } @After public void after() { System.out.println("@After"); } @BeforeClass public static void beforeClass() { System.out.println("@BeforeClass"); }; @AfterClass public static void afterClass() { System.out.println("@AfterClass"); }; }
结果:
@BeforeClass @Before @Test(timeout = 50) @After @Before @Test(expected = Exception.class) @After @Before @Test @After @AfterClass
三.@BeforeClass、@AfterClass与@Before、@After的对比:
@BeforeClass and @AfterClass | @Before and @After |
在一个类中只可以出现一次 |
在一个类中可以出现多次,即可以在多个方法的声明前加上这两个Annotaion标签,执行顺序不确定 |
方法名不做限制 | 方法名不做限制 |
在类中只运行一次 | 在每个测试方法之前或者之后都会运行一次 |
@BeforeClass父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。 |
@Before父类中标识了该Annotation的方法将会先于当前类中标识了该Annotation的方法执行。 @After父类中标识了该Annotation的方法将会在当前类中标识了该Annotation的方法之后执行 |
必须声明为public static | 必须声明为public 并且非static |
所有标识为@AfterClass的方法都一定会被执行,即使在标识为@BeforeClass的方法抛出异常的的情况下也一样会。 | 所有标识为@After 的方法都一定会被执行,即使在标识为 @Before 或者 @Test 的方法抛出异常的的情况下也一样会。 |
特别说明:
1.@BeforeClass 和 @AfterClass 对于那些比较“昂贵”的资源的分配或者释放来说是很有效的,因为他们只会在类中被执行一次。相比之下对于那些需要在每次运行之前都要初始化或者在运行之后 都需要被清理的资源来说使用@Before和@After同样是一个比较明智的选择;
2.如果类里面可以有多个注解过@Before和@After的方法,它们的执行顺序是未知的;
3.@BeforeClass @AfterClass注解是junit提供的另外的两个注解,必须设置在public 静态方法之上,表示在class加载之前执行,这样设置的方法只会执行一次,而@Before @After则会再每次test之前/之后执行;
4.在JUnit4中,如果测试类继承了TestCase类,那么所有的Annotation都不会起作用。
相关推荐
@BeforeClass @Before @After @AfterClass这些注解标注的方法又称测试的Fixture。 JUnit为所有原语类型、对象和数组(原语或对象)提供重载断言方法。参数顺序为预期值后接实际值。或者,第一个参数可以是失败时输出...
自定义实现基于注解的junit框架. 实现以下注解: @After @Before @AfterClass @BeforeClass @Test 实现junit 的对注解解析功能,并参照junit的异常处理.
@BeforeClass – 表示在类中的任意public static void方法执行之前执行 @AfterClass – 表示在类中的任意public static void方法执行之后执行 @Before – 表示在任意使用@Test注解标注的public void方法执行之前...
当一个测试方法还没有具备测试条件时可以先标志为忽略的测试方法 @BeforeClass:在所有测试方法执行前执行,只执行一次 ,且必须为static void,一般用于初始化一些共享的实例或加载共享的资源 @AfterClass:在所有...
@BeforeClass---@Before---@Test---@After---@Before ---@Test---@After---@AfterClass junit与main方法相比的优势:代码量少、结构清晰、灵活性更好 main:一个类中只能有一个main方0法 层次结构方面不够清晰 运行...
@BeforeClass:在所有测试方法执行前执行,只执行一次 ,且必须为static void,一般用于初始化一些共享的实例或加载共享的资源 @AfterClass:在所有测试方法执行后执行,只执行一次,且必须为static void,一般用于...
用于写java测试单元的必须的jar包,junit4.12jar包,java导入jar即可引用标签, 注解,方法名为test开头 ...@BeforeClass @AfterClass 每次都运行 void @Before @After 测试 void @Test
junit4 使用总结 @Test @Test(timeout=毫秒),@Test(expected=异常类) @Ignore ...@BeforeCalss @AfterClass @Before @After 测试套件@RunWith(Suite.class) 参数化设置@RunWith(Parameterized.class)
Green Bar和assertEquals步骤04:重构您的第一个JUnit测试步骤05:第二个JUnit示例assertTrue和assertFalse步骤06:@Before @After步骤07:@BeforeClass @AfterClass步骤08:比较JUnit测试中的数组步骤09:测试...
Files contained in junit4-4.8.2.jar: LICENSE.txt META-INF/MANIFEST.MF junit.extensions.ActiveTestSuite.class junit.extensions.RepeatedTest.class junit.extensions.TestDecorator.class junit.extensions...
Mockito教程:通过25个Junit...@BeforeClass @AfterClass批注 Junit中有一些方法 @测试 失败 断言 assertEquals(预期,结果) 步骤4 JUnit简单测试方案 比较数组 测试异常 性能单元测试 有些事情我们可能会改变。 测试
@BeforeClass全局只会执行一次,而且是第一个运行@Before在测试方法运行之前运行@Test测试方法@After在测试方法运行之后允许@AfterClass全局只会执行一次,而且是最后一个运行@Ignore忽略此方法新建一个项目叫JUnit...
测试包括:测试用例:@Test批注@ BeforeClass,@ Before,@ After,@ AfterClass,用于测试其行为 注意:项目结构 项目-src:部署到生产-包名称,例如com.junit.class-类名,例如MyClass-测试:不部署到生产-包名称...
1. junit用法,before,beforeClass,after, afterClass的执行顺序 2. 分布式锁 3. nginx的请求转发算法,如何配置根据权重转发 4. 用hashmap实现redis有什么问题(死锁,死循环,可用ConcurrentHashmap) 5. 线程的...