JAVA单元测试用例——待续

JAVA单元测试用例编写



  单元测试通常不依赖第三方组件(比如数据库),如果遇到了这些需要依赖第三方的情况,可以使用mock技术,模拟想要的情况,Java中mock的对象主要是Java方法和Java类。JUnit进行单元测试时可以结合使用Mockito和PowerMock来模拟外部依赖,增加测试可控。Mockito主要支持对实例的模拟(验证或直接跳过),PowerMock在Mockito的基础上扩展而来,支持Mockito的操作,是一个扩展了多个mock框架的、功能更加强大的框架。它使用一个自定义类加载器和字节码操作来模拟public方法(大多数情况)、static静态方法、构造方法、final类和方法、private私有方法、enum枚举类、去除静态初始化器等。

一、常用注解(不区分)


应用于测试类上


  • @RunWith(PowerMockRunner.class)
  • 指定JUnit 使用 PowerMock 框架中的单元测试运行器来做Object的Mock工作,在执行时,再交给delegate的runner去执行。
  • @PowerMockIgnore({…, …})
  • 默认情况下,PowerMock会用自己的类加载器去加载所有的类,除了system class(java.lang等目录下的类),使用PowerMockIgnore声明的类PowerMock也不会加载。
  • @PrepareForTest({…, …})
  • PowerMock提供注解,模拟final类、final方法或static静态方法时,需要添加该注解,并指定方法所在的类。如果需要指定多个类,在{}中添加多个类并用逗号隔开即可。

应用于属性及方法上


  • @Before、@BeforeClass、@After、@AfterClass
  • @BeforeClass(@BeforeAll): 在测试类中只会被执行一次,注解在静态方法上。
  • @Before(@BeforeEach):每个测试方法均会执行一次,注解在非静态方法上。
  • 单元测试用例执行顺序: @BeforeClass -> @Before -> @Test -> @After -> @AfterClass。
  • 测试方法的调用顺序:@Before -> @Test -> @After。
  • @Mock
  • 创建一个Mock实例(类或接口),其所有属性均被置0或null,Mock函数默认不执行,有返回值的返回null、空集合或被对象类型包装的内置类型(Integer等)。
  • Mock对象会记住所有的交互,即对这个Mock对象做的操作都被记录下来,然后可以选择性验证(verify方法) 感兴趣的交互。
// 类
@Component
public class TClass {
   

    public String getMessage(String str) {
   
        System.out.println(str);
        return str + "!!!";
    }
}

// 测试
@Mock
private TClass tClass;

@Test
public void testTClass() {
   
	// 不会真正地执行
    tClass.getMessage("ho");
    // 验证正确,因为该行为被记录
    Mockito.verify(tClass).getMessage("ho");
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值