junit单体测试(PowerMockito)

最近1个月项目尾声,在公司做单体测试,从模仿开始,积累了一些东西,记录下来,留备以后不时之需;

需要jar包:

javassist-3.16.1-GA.jar

mockito-all-1.9.5.jar

powermock-api-mockito-1.5.6.jar

powermock-api-support-1.5.6.jar

powermock-core-1.5.6.jar

powermock-module-junit4-1.5.6.jar

powermock-module-junit4-common-1.5.6.jar

powermock-reflect-1.5.6.jar

junit-4.10.jar

在使用mock时,首先要在测试类上加上注解@PrepareForTest({类名.class}),这里的“类名.class”是类里调用的类,需要被mock的类

  1. 当需要mock私有方法调用的私有方法时,需要加上@RunWith(PowerMockRunner.class),其余不需要加,创建时也可以用new。
  2. public调用有返回值的private方法

    PowerMockito.when(对象,“私有方法名”,参数).thenReturn(期望的value);此方法要加上@RunWith(PowerMockRunner.class),此时创建类的对象时不能直接用new,需要用PowerMockito.Mock(类名.class);并需要将 类名.class放到类上的注解@PrepareForTest({类名.class})内;

  3. 用mock对象替换原代码中的对象

    e.g:

    public class AA{

    Private User u;

    public void A(){

u.getName();

}

}

@PrepareForTest({User.class})

Public class test{

@Test

public void test_001(){

AA a = new AA();

User u1 = PowerMockito.Mock(User.class);

Whitebox.setInternalState(a,"u",u1);

PowerMockito.when(u1.getName()).thenReturn(value);

}

}

4.要对一个类内,方法调用的方法进行mock

e.g:public class AA{

private User u;

private Ver v;

public void getData(){

String a = u.getName();

String b = v.getAge();

}

}

测试的过程:①.首先对整个类进行mock

②.然后调用方法

③.接着mock调用的类

④.新对象的名字代替代码里的

⑤.对方法进行mock

⑥.调方法。

e.g:①.AA a = PowerMockito.mock(AA.class);

②.PowerMockito.doCallRealMethod.when(a).getData();

③.User u1 = PowerMockito.mock(User.class);

④.Whitebox.setInternalState(a,"u",u1);

⑤.PowerMockito.when(u1.getName()).thenReturn(value);

⑥.a.getData();

5.测试中测异常

PowerMockito.doThrow(new Exception()).when(对象).getName();

new Exception()是你期待的异常,getName是出异常的方法;

6.。。。。天太热了,凉了在写。。。。

时间: 2024-12-13 16:51:50

junit单体测试(PowerMockito)的相关文章

junit单体测试(PowerMockito)二

距离上次做junit单体测试几个月,果然又用到了,又学习了一些新的东西,总结一下. 首先是对spy的理解,以前一直用mock,没有用过spy,所以对spy并不了解,最近用过几次后,也在google上学习了一下,网上说的都比较书面,mock:全部mock:spy:部分mock:但是到底什么叫全部,什么叫部分却始终没有能弄明白,自己实际使用后感觉,全部mock应该是对整个方法进行mock,不实际走方法,直接返回mock的返回值:而spy的部分mock应该是虽然mock了这个方法,并且返回了我们设置的

单体测试和结合测试相关的总结

第一次接触到Android单体测试和结合测试,查阅了相关资料,学习了很多东西,现总结如下: 单体测试就是测试代码,测试函数的实现是否正确: 单体测试按照等级分为: 1.不考虑函数逻辑,输入一个值(正确的值,临界值,错误的值),执行函数后能否输出想要的值: 2.考虑代码逻辑,其中的每个if语句,case语句,switch语句等都进行测试: 单体测试在源代码的基础上建立junit test,然后写test case: 结合测试是测试apk的: 1.需要导入源代码的R.java文件,因为需要引入源代码

单体测试1

关于Unitils,功能比较多,也比较复杂.资料比较少,官方文档写的还不是很明白,不通俗易懂,可能对我这个对J2EE,spring,hibernate 等不了解的原因吧.言归正传,我这里翻译带自己的一点理解讲一下Unitils. Unitils是一种开源库,目的是使单体测试简单和可维护. Unitils是建立在已经存在的库.如DBunit和EasyMock,同时集成JUnit和TestNG. Unitils提供一般的断言功能,支持数据库测试,模拟对象,集成Spring, Hibernate, J

单体测试—— Junit4.x

l取代main方法快速测试程序 [email protected]: 测试方法(******) [email protected]: 被忽略的测试方法 [email protected]: 在每个测试方法执行之前都要执行一次. [email protected]: 在每个测试方法执行之后要执行一次. [email protected]: 所有测试开始之前运行 static [email protected]: 所有测试结束之后运行 static l使用断言判断测试结果 •assertEquals

Junit指定测试执行顺序

原文链接: Test execution order原文日期: 2012年12月06日翻译日期: 2014年7月2日翻译人员: 铁锚 说明: Junit4.11版本及以后才支持,建议升级到最新版本. 按照设计原则,JUnit是不指定测试方法调用执行顺序的.目前为止,这些方法只是简单地按照反射(reflection) API返回的顺序执行.但是,使用JVM默认提供的排序是很不明智的,因为Java平台没有指定任何有规律的顺序,而事实上JDK 7可能会返回一个随机的顺序.当然,精心编写的测试代码之间并

单体测试书的检查要点

在系统开发中单体测试时非常重要的.特别是对于承担开发任务的公司来说,单体测试做得好的话能大大减少返工,提高效率.特别是我们的一些外包公司,可能有的项目只让你做编码和单体测试. 单体测试是质量的第一关,要做好单体测试首先要写好单体测试书.也许有的公司就没有单体测试书这回事,完全凭借员工的经验来做单体测试,这样做的风险较大. 写单体测试书虽然要花费一定时间,但写单体测试书以下几个好处. 1.在写单体测试书的时候能够更加准确地理解详细设计书甚至是要件定义. 2.写好的测试书在做review的时候能够进

关于JUnit的测试

把以前的笔记整理一下,做个备份方便以后查阅: 要测试的代码如下: package dao.jdbc; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet; import util.DBUtil; import dao.IAccountDAO;import entity.Account; public class AccountDAOImpl implements IAccou

eclipes使用junit进行测试

任务一,Install Junit(4.12), Hamcrest(1.3) with Eclipse 首先在网上下载Junit和Hamcrest的jar文件,Right click on the project root directory - > build path - > configure build path - > library the junit. Jar, hamcrest. Jar added 任务二,Install Eclemma with Eclipse 在my

运用JUnit进行测试

1.JUint简介 JUnit是一个Java语言的单元测试框架.JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试. 它包括以下特性: 1.用于测试期望结果的断言(Assertion) 2.用于共享共同测试数据的测试工具 3.用于方便的组织和运行测试的测试套件 4.图形和文本的测试运行器 2.一个简单的JAVA程序,并用JUnit进行测试 第一步,运用eclipse编写程序,显示“Hello YangYang” 运行效果 第二步,将JUnit4单元测试包引入这个项目 (1)