Mockito

来自姬鸿昌的知识库
Jihongchang讨论 | 贡献2024年12月12日 (四) 05:02的版本 (建立内容为“测试调用类的静态方法的示例:<syntaxhighlight lang="java"> import org.junit.jupiter.api.Test; import org.mockito.MockedStatic; import org.mockito.Moc…”的新页面)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

测试调用类的静态方法的示例:

import org.junit.jupiter.api.Test;
import org.mockito.MockedStatic;
import org.mockito.Mockito;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.Mockito.*;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.junit.jupiter.MockitoExtension;

@ExtendWith(MockitoExtension.class)
public class MathUtilsTest {

    @Test
    public void testPrintSumMethodCalled() {
        try (MockedStatic<MathUtils> mockedMathUtils = mockStatic(MathUtils.class)) {
            // 模拟的调用场景,这里假设在某个业务逻辑代码中会调用MathUtils.printSum方法
            // 例如以下是模拟调用
            MathUtils.printSum(3, 5);

            // 使用verify方法来验证MathUtils.printSum方法是否被调用,并且参数是否符合预期
            mockedMathUtils.verify(() -> MathUtils.printSum(3, 5));
        }
    }

    @Test
    public void testPrintSumMethodCalledWithAnyParameters() {
        try (MockedStatic<MathUtils> mockedMathUtils = mockStatic(MathUtils.class)) {
            // 模拟的调用场景,这里假设在某个业务逻辑代码中会调用MathUtils.printSum方法
            MathUtils.printSum(10, 20);

            // 如果不关心具体传入的参数是什么,只想验证方法被调用了,可以使用anyInt()等参数匹配器(根据参数类型选择合适的匹配器)
            mockedMathUtils.verify(() -> MathUtils.printSum(anyInt(), anyInt()));
        }
    }
}