如何在Java Unit Test中mock 静态方法
2017-07-09 22:01
239 查看
在我们平时写单元测试的时候有时候需要mock掉类里面的部分或者全部静态方法,这个需要用到那一些jar呢?以及需要怎么样的配置呢。下面是一些关于这些方面的分享:
1. 假如我们有下面的一个类:
Public class Demo {
public static void method1 {
...
}
public static void method2 {
...
}
public static void method3 {
...
}
}
然后我们想要为上面这个类写一个单元测试类,我们期待有测试类中mock掉method1和method2。
2. 下面就是我们定义的测试类:@RunWith(PowerMockRunner.class)
@PrepareForTest({Demo.class})
public class DemoTest {
@Before
public void setup() {
BasicConfigurator.configure();
PowerMock.mockStaticPartial(Demo.class, "method1", "method2");
EasyMock.expect(Demo.method1()).andReturn("method1").anyTimes();
EasyMock.expect(Demo.method2()).andReturn("method2").anyTimes();
PowerMock.replayAll();
}
}
这里我们用到的PowerMock,EasyMock是来自于第三方包powermock-api-easymock-1.6.1,下面是maven对应的pom 依赖: <dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-easymock</artifactId>
<scope>test</scope>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
<version>3.3.1</version>
</dependency>
1. 假如我们有下面的一个类:
Public class Demo {
public static void method1 {
...
}
public static void method2 {
...
}
public static void method3 {
...
}
}
然后我们想要为上面这个类写一个单元测试类,我们期待有测试类中mock掉method1和method2。
2. 下面就是我们定义的测试类:@RunWith(PowerMockRunner.class)
@PrepareForTest({Demo.class})
public class DemoTest {
@Before
public void setup() {
BasicConfigurator.configure();
PowerMock.mockStaticPartial(Demo.class, "method1", "method2");
EasyMock.expect(Demo.method1()).andReturn("method1").anyTimes();
EasyMock.expect(Demo.method2()).andReturn("method2").anyTimes();
PowerMock.replayAll();
}
}
这里我们用到的PowerMock,EasyMock是来自于第三方包powermock-api-easymock-1.6.1,下面是maven对应的pom 依赖: <dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-easymock</artifactId>
<scope>test</scope>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
<scope>test</scope>
<version>3.3.1</version>
</dependency>
相关文章推荐
- Java 静态方法中如何操作成员变量。
- 【Java】中静态方法如何访问非静态方法和非静态变量
- unit test mock 带有抛出异常的方法时,要在unittest上显示抛出异常,否则报错,而且编译器不提示要抛出异常
- Java中静态方法如何体现预装载性?
- java单元测试之Mock静态方法
- java如何通过反射 激活静态类的静态方法
- 如何用PowerMockito 测试静态方法
- 详解Kotlin中如何实现类似Java或C#中的静态方法
- Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)
- Using Mockito to Unit Test Java Applications
- Java中如何通过一个类名来调用另一个类的静态方法?
- #java#静态方法如何调用非静态方法和变量
- java中用静态方法返回类名
- 如何在Java中实现远程方法调用
- java 静态方法和静态变量 static
- Java中静态方法返回类名
- java中静态代码块 静态方法
- 如何在Java中实现将两个数相互交换的方法
- java 静态代码块 静态方法
- JAVA如何调用C/C++方法