来个简单的
@RunWith(PowerMockRunner.class)
@PrepareForTest(MockFile.class)
public class MockFile {
@Test
public void testRegisterService2() throws Exception {
String s="F:/aa.txt";
File file=PowerMockito.mock(File.class);
// PowerMockito.whenNew(File.class).withArguments(s).thenReturn(file);
PowerMockito.whenNew(File.class).withArguments(Mockito.anyString()).thenReturn(file);
PowerMockito.when(file.exists()).thenReturn(true);
File a=new File(s);
Assert.assertEquals(true, a.exists());
}
}
再来个复杂的,模拟数据流
import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
// 注意这里,这个是new FileInputStream所在的类
@PrepareForTest({ AA.class })
public class MockWhenNew {
@Test
public void test() throws Exception {
// 模拟数据流
File file = PowerMockito.mock(File.class);
FileInputStream is = PowerMockito.mock(FileInputStream.class);
PowerMockito.whenNew(FileInputStream.class).withArguments(file).thenReturn(is);
InputStreamReader ir = new InputStreamReader(new ByteArrayInputStream("123".getBytes()));
PowerMockito.whenNew(InputStreamReader.class).withArguments(Mockito.any(FileInputStream.class)).thenReturn(ir);
AA spy = new AA();
Assert.assertEquals("123", spy.aa(file));
}
}
class AA {
public String aa(File file) throws Exception {
FileInputStream in = new FileInputStream(file);
InputStreamReader is = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(is);
String line = "", s = "";
while ((line = reader.readLine()) != null) {
s += line;
}
return s;
}
}
分享到:
相关推荐
PowerMock的HelloWorld示例通常会展示如何使用PowerMock创建一个简单的测试用例,比如模拟一个静态方法来获取员工数量,并创建一个员工对象。 #### 重点API解释 - **Mock**:创建一个mock对象,用于模拟方法调用。...
此外,Easymock还有其扩展库,如PowerMock,它可以模拟静态方法、构造函数和final类,进一步增强模拟能力。 总之,Easymock在模拟异常处理方面提供了强大的工具,使得开发者能够在单元测试中有效地验证代码的异常...
**ArgumentsMatcher** 是PowerMock提供的一个强大特性,允许根据传入的参数来决定模拟对象的行为。这在需要根据不同的输入参数返回不同结果的情况下特别有用,例如测试边界条件或者特殊情况。 - **使用场景示例**:...
Easymock 2.4 是一款著名的Java模拟框架,用于单元测试中创建模拟对象,以便在不依赖实际环境的情况下测试代码。Mock对象是软件测试中的一个重要概念,它模仿了真实对象的行为,允许开发者控制其行为以进行特定的...
Mockito是一个流行的Java单元测试框架,它允许我们创建和配置模拟对象,以便在测试中隔离我们想要验证的代码部分。结合Spring Boot,我们可以确保我们的应用程序组件在独立环境中运行,不受其他依赖的影响。 首先,...
然而,一些开发者可能会避免使用像Mockito或PowerMock这样的模拟库,因为它们可能引入复杂性或导致额外的测试依赖。本篇将详细介绍如何在不依赖外部模拟库的情况下,在测试中模拟Android的AsyncTask。 首先,理解...
Mock对象是一种模拟真实对象的行为,使得开发者可以在不依赖实际环境的情况下测试代码。`Mock.java.zip`可能是一个包含关于如何在Java中使用Mock技术的项目或教程压缩包。这个压缩包的名字`Mock.java-idea-01`暗示了...
Mockito则用于模拟对象,以便在孤立环境中测试单个组件。 2. 集成测试(Integration Testing):在单元测试通过后,集成测试关注的是不同模块间的交互。这一步通常用来发现接口之间的问题。Spring Boot框架提供了...
Java是一种广泛应用的面向对象编程语言,适合大型企业级应用,且具有丰富的库支持自动化测试,如JUnit、Selenium和TestNG等。 【文件名称列表】 由于提供的文件名称只有一个:“ecmTest-master”,我们可以推测这是...
而Mockito或PowerMock可能用于模拟依赖,进行集成测试。 综上所述,XtraVision项目涵盖了Java编程、图形用户界面设计、图像处理、计算机视觉算法等多个方面。为了深入了解和参与此项目,开发者需要扎实的Java基础,...