单元测试一个调用了静态方法的方法
时间: 2023-11-22 11:53:53 浏览: 171
假设我们有一个类 `MyClass`,其中有一个静态方法 `staticMethod()`,现在要对调用了这个静态方法的方法 `myMethod()` 进行单元测试,可以按照以下步骤进行:
1. 创建一个测试类 `MyClassTest`。
2. 在测试类中创建一个测试方法 `testMyMethod()`,并在此方法中创建一个 `MyClass` 对象。
3. 使用 Mockito 框架的 `mockStatic()` 方法来 mock 静态方法 `staticMethod()`,以便在测试方法中控制它的返回值。
4. 调用 `myMethod()` 方法,并使用断言来验证其行为和结果是否符合预期。
下面是一个示例代码:
```java
import org.junit.Test;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import static org.junit.Assert.assertEquals;
public class MyClassTest {
@Test
public void testMyMethod() {
// 创建被测试对象
MyClass myClass = new MyClass();
// mock 静态方法
try (MockedStatic<MyClass> mocked = Mockito.mockStatic(MyClass.class)) {
mocked.when(MyClass::staticMethod).thenReturn("mocked result");
// 调用被测试方法
String result = myClass.myMethod();
// 验证结果是否符合预期
assertEquals("mocked result", result);
}
}
}
```
需要注意的是,由于静态方法所属的类不是被测试类的一部分,因此需要使用 Mockito 框架的 `mockStatic()` 方法来 mock 静态方法。同时,在使用 `MockedStatic` 对象时,需要使用 try-with-resources 语句来确保 mock 对象在测试完成后被正确地关闭。
阅读全文