用到powmock
注意点:
1 @RunWith(PowerMockRunner.class)
2 @PrepareForTest(PrivateObject.class)
3 PrivateObject obj = PowerMockito.spy(new PrivateObject()); 这里用spy
4 PowerMockito.when(obj, "name").thenReturn("private"); name是方法名
package com.eyu.ahxy.module.staticd;
public class PrivateObject {
private String name() {
return "test";
}
public String name2() {
return name();
}
}
package com.eyu.ahxy.module.staticd;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(PrivateObject.class)
public class PrivateTest {
@Test
public void test1() throws Exception {
PrivateObject obj = PowerMockito.spy(new PrivateObject());
PowerMockito.when(obj, "name").thenReturn("private");
String result = obj.name2();
assertThat(result, equalTo("private"));
}
}
powmock的依赖
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>1.6.1</version>
<scope>test</scope>
</dependency>
分享到:
相关推荐
PowerMock允许我们使用`@PrepareForTest`注解指定需要模拟的类,并通过`PowerMockito.mockStatic`或`Mockito.when`来模拟私有方法。 下面是一段使用PowerMock模拟静态方法和私有方法的示例代码: ```java import ...
此外,PowerMockito还可以用来模拟私有方法。在某些情况下,如果一个方法的逻辑依赖于一个或多个私有方法,但我们在测试该方法时并不想关注这些私有方法的行为,那么我们可以使用PowerMockito来模拟这些私有方法。...
基于Mockito和PowerMockito的Java单元测试指南 ... 测试私有方法 静态方法的模拟 最终方法的模拟 内部类的模拟 3. 高级技巧 处理可变参数 父类属性的注入 统一模拟和存根的方式 异常处理与验证 4. 最佳实践
PowerMock是一个强大的扩展库,它允许开发者模拟静态方法、构造函数、final类和方法、私有方法、删除静态初始化器等,这些都是标准的Java mocking框架如Mockito无法做到的。PowerMock通过字节码操作(Bytecode ...
这些工具在Java开发中被广泛用于单元测试和模拟,尤其对于处理静态方法、构造器、final类和方法、私有方法等无法直接进行测试的情况。 PowerMock 是一个扩展了其他Mock框架(如Mockito)的库,它允许开发者模拟那些...
在进行测试时,还可以考虑使用其他工具,如PowerMock,它扩展了Mockito的功能,能够模拟静态方法、构造函数、final类和方法,以及私有和包私有类。不过,使用PowerMock应当谨慎,因为过度依赖这类工具可能导致测试...
PowerMock是一个扩展了其他Mocking框架(如EasyMock和Mockito)的库,它允许开发者对静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器进行模拟和mock。在传统测试框架中,这些通常是难以或无法测试...
但需要注意的是,尽管Mockito提供了强大的功能,它仍然存在一定的局限性,比如不能直接模拟私有方法等。 ##### 2.3 准备工作 要使用Mockito,首先需要将其添加到项目的依赖管理中。对于使用Maven的项目,可以在`...
在单元测试领域,PowerMock是一个强大的工具,它扩展了诸如Mockito等模拟框架的功能,允许开发者模拟静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器等。这一工具对于测试那些难以或者无法正常...
PowerMock是一个扩展了其他Mocking框架(如Mockito)的库,它可以模拟静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器。这样,即使被测试的类有难以控制的依赖,我们也能进行有效的单元测试。 ...
- 支持静态方法、私有方法和构造函数的模拟。 - 能够验证方法调用序列,包括方法调用的次数、顺序和参数匹配。 - 提供强大的匹配器(matchers)来处理复杂的参数匹配逻辑。 文档内容中还涉及到了一些关于书籍出版的...
4. **模拟私有方法**:首先,需要使用`PowerMockito.spy()`创建被测类的间谍对象。然后,使用`PowerMockito.when()`和`doReturn()`来模拟私有方法的行为。注意,调用私有方法通常需要使用`ReflectionUtils`类或`...
通过提供定制的类加载器以及一些字节码篡改技巧的应用,PowerMock 现了对静态方法、构造方法、私有方法以及 Final 方法的模拟支持,对静态初始化过程的移除等强大的功能。因为 PowerMock 在扩展功能时完全采用和被...
此外,如果需要 mock 静态方法、私有函数或者构造函数,可以结合使用 PowerMock 这个扩展库。它允许你创建更复杂的 mock 场景,但使用时需谨慎,因为过度使用 mock 可能会掩盖潜在的问题。 总的来说,Mockito 为 ...
5. **模拟私有方法和内部类**:PowerMock也可以模拟私有方法和内部类的行为,这对于测试私有逻辑很有帮助。 ### 使用PowerMock的最佳实践 1. **最小化模拟**:尽可能只模拟必要的部分,避免过度模拟,因为这可能会...
单元测试工具的需求日益增长,其中PowerMock作为一种强大的扩展工具,为JUnit和Mockito等框架带来了前所未有的能力,尤其在处理静态方法、构造方法、私有方法和final方法的模拟方面,展现出了卓越的表现。...
PowerMock是一个强大的Java单元测试框架,它扩展了如Mockito这样的工具,允许开发者模拟静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器。在Java开发中,有时我们需要对不可Mock的对象进行单元...
私有方法的测试是单元测试中一个较为复杂的问题,PowerMock提供了模拟私有方法的能力。 #### 业务代码 在业务代码中,可能需要直接测试私有方法以确保逻辑正确。 #### PowerMock测试 使用PowerMock可以测试那些...
PowerMock 是基于 Mockito 的扩展,它增加了对静态方法、构造函数、final 类和方法、私有方法、删除静态初始化器等难以模拟情况的支持。这对于测试那些具有紧密耦合或者使用了不可变类、静态方法或反射的代码非常...