Writing unit tests can be hard and sometimes good design has to be sacrificed for the sole purpose of testability.
Often testability corresponds to good design, but this is not always the case.
For example final classes and methods cannot be used, private methods
sometimes need to be protected or unnecessarily moved to a collaborator,
static methods should be avoided completely and so on simply because of
the limitations of existing frameworks.
PowerMock is a framework that extend other mock libraries such as PowerMock with more powerful capabilities.
Write a test like this:
@RunWith(PowerMockRunner.class)
@PrepareForTest( { YourClassWithEgStaticMethod.class })
public class YourTestCase {
...
}
一个读取文本文件字符的Tools:
package wei.peng.easymock;
import java.io.BufferedReader;
import java.io.FileReader;
/**
* 逐行读取文本文件,计算字符数
* @author WPeng
*/
public class BeMockObject2 {
int resultNum = 0;
public int getCharNum(){
try {
String pathStr = "c:/test.txt";
//创建FileReader对象,用来读取字符流
FileReader fileReader = new FileReader(pathStr);
//缓冲指定文件的输入
BufferedReader bufferReader = new BufferedReader(fileReader);
//一行一行读
while (bufferReader.ready()) {
String line = bufferReader.readLine();
resultNum += line.length();
}
} catch (Exception e) {
// TODO: handle exception
}
return resultNum;
}
}
PowerMock + Mockito测试:
package wei.peng.easymock;
import junit.framework.TestCase;
import static org.mockito.Mockito.when;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
/**
* @author WPeng
*/
@RunWith(PowerMockRunner.class)
@PrepareForTest(BeMockObject2.class)
public class MockitoTest extends TestCase {
@Mock
BeMockObject2 beMockObject2;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
}
public void testGetRecordNum() {
int expected = 100;
when(beMockObject2.getCharNum()).thenReturn(100);
assertEquals(expected, beMockObject2.getCharNum());
}
}
分享到:
相关推荐
PowerMock和Mockito是两个非常流行的Java单元测试框架,结合JUnit,它们可以提供强大的测试能力。在本文中,我们将深入探讨"PowerMock+Mockito-junit测试套件1.6.3版本"中的关键概念、功能和使用方法。 **PowerMock...
PowerMock-Mockito-JUnit-1.6.2.zip 是一个包含PowerMock、Mockito和JUnit集成库的压缩包,适用于Java开发环境。这个版本的PowerMock要求使用1.6或更高版本的Java Development Kit (JDK)。下面将详细解释这三个主要...
PowerMock-Mockito-JUnit-1.6.3.zip 是一个包含最新版本的 PowerMock、Mockito 和 JUnit 库的压缩文件。这些工具在Java开发中被广泛用于单元测试和模拟,尤其对于处理静态方法、构造器、final类和方法、私有方法等...
powermock-mockito-demo powermock-mockito-demo with springboot 使用在springboot项目中使用powermock-mockito进行单元测试,演示mock static、private、whenNew、exception的测试。 注意 示例使用spring-boot ...
赠送jar包:powermock-api-mockito2-2.0.9.jar; 赠送原API文档:powermock-api-mockito2-2.0.9-javadoc.jar; 赠送源代码:powermock-api-mockito2-2.0.9-sources.jar; 赠送Maven依赖信息文件:powermock-api-...
在本文中,我们将深入探讨如何在Spring Boot项目中有效地使用Mockito进行单元测试。Mockito是一个流行的Java单元测试框架,它允许我们创建和配置模拟对象,以便在测试中隔离我们想要验证的代码部分。结合Spring Boot...
PowerMock集成了Mockito的功能,使得开发者可以在一个统一的框架下使用两种工具的优势。 在使用PowerMock和EasyMock时,需要注意以下几点: 1. **适度模拟**:虽然模拟可以减少测试的复杂性,但过度模拟可能导致...
PowerMock是一个强大的Java单元测试框架,它扩展了如Mockito这样的工具,允许开发者模拟静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器。在Java开发中,有时我们需要对不可Mock的对象进行单元...
使用 mockito-core 而不是 mockito-all 的 PowerMock 示例。 问题(参见 pom.xml): a) 如果 JUnit 在 powermock-api-mockito 之前是显式依赖项,则 JUnit 的 Hamcrest 1.3 依赖项会获胜并且测试运行良好。 b) ...
Java单元测试框架源码分钟 Android Unit Test Sample All Sample code is under ...如果想获得较高质量的代码和可交付产品,又不想为单元测试付出过多精力,那么恭喜你,这篇文章是为你准备的。...我知道大家讨厌枯燥的...
java运行依赖jar包
《PowerMock实战手册》是一本专注于使用PowerMock进行单元测试的指南,结合了Junit测试框架和Mockito库,为开发者提供了全面的测试解决方案。在实际的软件开发中,单元测试是确保代码质量的重要环节,它能帮助我们找...
java运行依赖jar包
1. **引入依赖**:在项目中添加PowerMock的依赖,如上述的powermock1.4.9.jar,同时可能还需要对应的Mockito或EasyMock库。 2. **注解配置**:在测试类上使用`@RunWith(PowerMockRunner.class)`来运行测试,确保...
PowerMock是一个强大的扩展工具,它可以与Mockito、EasyMock等主流Mock框架结合,允许我们模拟静态方法、构造器、final类和方法、删除静态初始化器等。 标题“使用PowerMock来Mock静态函数”指的是如何利用...
PowerMock 是一个强大的Java单元测试框架,它扩展了其它单元测试工具,如Mockito,使得开发者可以模拟静态方法、构造函数、final类和方法、删除静态初始化器等。这款库在进行复杂对象模拟时非常有用,尤其是在处理...
java运行依赖jar包
PowerMock是一个扩展了其他Mocking框架(如Mockito)的库,它可以模拟静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器。这样,即使被测试的类有难以控制的依赖,我们也能进行有效的单元测试。 ...
PowerMock是在easymock和mockito的基础上构建的,旨在提供更多的功能,解决传统mock框架无法处理的一些问题。通过这个系列的教学,学习者将能够全面掌握PowerMock的各种特性和用法。 1. **入门**:在这个阶段,你会...