单元测试一个调用了静态方法的方法
时间: 2023-11-22 17:53:43 浏览: 41
假设我们要测试的方法是以下的 `doSomething()` 方法,其中调用了一个静态方法 `StaticClass.staticMethod()`:
```java
public class MyClass {
public void doSomething() {
// do something
StaticClass.staticMethod();
// do something else
}
}
```
我们可以使用 Mockito 框架来 mock `StaticClass` 类的 `staticMethod()` 方法,并在测试中验证它是否被调用。
首先,我们需要在测试中 mock `StaticClass` 类,如下所示:
```java
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import org.junit.Test;
public class MyClassTest {
@Test
public void testDoSomething() {
// mock StaticClass
StaticClass mockStaticClass = mock(StaticClass.class);
// create instance of MyClass and call the method
MyClass myClass = new MyClass();
myClass.doSomething();
// verify that the static method was called
verify(mockStaticClass).staticMethod();
}
}
```
在这个测试中,我们首先使用 `mock()` 方法创建了一个 `StaticClass` 的 mock 对象。然后,我们创建了 `MyClass` 的实例并调用了 `doSomething()` 方法。最后,我们使用 `verify()` 方法验证 `StaticClass` 的 `staticMethod()` 方法是否被调用。
注意,为了使这种方法的单元测试更加准确和可靠,我们建议在测试中尽可能地避免使用静态方法和全局状态,因为它们可能会导致测试结果不稳定。
阅读全文