org.powermock powermock-module-testng 2.0.2 test org.powermock powermock-api-mockito2 2.0.2 test

mokito使用不再介绍,powermock可以mock静态方法:

@PrepareForTest(ZipUtil.class)
public class ExecutorTest extends PowerMockTestCase {
    @InjectMocks
    private Executor executor;
    @Mock
    private FTPService ftpService;
    @BeforeMethod
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    @Test
    public void testExecute() {
		PowerMockito.mockStatic(ZipUtil.class);
        PowerMockito.mockStatic(FileUtils.class);
        PowerMockito.when(FileUtils.listFiles(any(), any(), anyBoolean())).thenReturn(Lists.newArrayList());
        executor.execute(instructionDTO);

遇到问题:

java.lang.NoSuchMethodError: org.mockito.Mockito.framework()Lorg/mockito/Moc

问题原因:

参考这篇文章发现是mockito和powermock版本不一致:

异常 Exception in thread "main" java.lang.NoSuchMethodError: org.mockito.Mockito.framework()Lorg/mo... - 简书

解决方法:

安装maven dependency helper插件和maven helper插件,用于分析依赖

在pom中,点击下方的dependency analyzer,输入mock,查找mockito版本,我之前查找到时1.10.19

右键点击排除,之后手动添加mockito版本:

        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-testng</artifactId>
            <scope>test</scope>
        </dependency>        
        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito2</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <artifactId>mockito-core</artifactId>
                    <groupId>org.mockito</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>2.23.4</version>
        </dependency>
引入pom: &lt;dependency&gt; &lt;groupId&gt;org.powermock&lt;/groupId&gt; &lt;artifactId&gt;powermock-module-testng&lt;/artifactId&gt; &lt;version&gt;2.0.2&lt;/version&gt; &lt;scope
文章目录前言单元测试(mock) 错误org.mockito.Mockito.framework()Lorg/mockito/MockitoFramework;解析01 准备01::01 安装maven dependency helper插件和maven helper插件02 问题经过03 分析依赖03 问题分析   如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!! 单元测试(mock) 错
public class FileTest { public boolean callInternalInstance(String path) { File file = new File(path); return file.exists(); 测试方法: @Test     public void ne... 在项目依赖比较复杂或者 Java 运行的环境有问题时,或者同一类型的 jar 包有不同版本存在,都可能触发该错误。本质上说是 JVM 找不到某个类的特定方法,也就是说 JVM 加载了错误版本的类。说白了,就是 JVM 找不到真正想要调用的方法啦!出现该错误的情形主要有以下两个种: 导入了不匹配的包版本;开发环境和运行环境不一致。 2 解决方法 查看“External Libraries”,看报错的方法到底存不存在,如果不存在,说明这个包一定有问题啦,更新包就可以啦;如果存在,说明包已...
单元测试(Unit Testing),是指对软件或项目中最小可测试单元进行正确性检验的测试工作。单元是人为规定最小可测试的功能模块,可以是一个模块,一个函数或者一个类。单元测试需要与模块开发进行隔离情况下进行测试。 在程序开发完成后,我们往往不能保证程序 100% 的正确,通过单元测试的编写,我们可以通过自动化的测试程序将我们的输入输出程序进行定义,通过断言来 Check 各个 Case 的结果,检测我们的程序。以提高程序的正确性,稳定性,可靠性,节省程序开发时间。我们在项目中主要用到的单元测试框架有 S.
我们知道,PowerMock也提供了对TestNG的支持 在Maven测试项目中,基于TestNG配置pom.xml文件以使用PowerMockMockito扩展,示例如下: 1.6.5 org.powermock powermock-module-testng ${powermock.version} Powermock常见注解解释 1.Mockito.mock()方法和@MockBean和@Mock的区别 Mockito.mock可以用来创建类或接口的模拟对象,并且可以使用mock来指定方法的行为,验证他们是否被调用 @Mock注解实际上是Mockito.mock()方法的缩写,我们只在测试类中使用它。 @MockBean注解在集成测试很有用,使用@mockBean注解将mock对象添加到Spring上下文中。 import javax.servlet.http.HttpServletRequest; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.testng.Assert; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import static org.mockito.Mockito.*; public class MyServletTest { @Mock HttpServletRequest request; @BeforeClass public void setUp() { MockitoAnnotations.initMocks(this); @Test public void testMyServlet() { // 模拟HttpServletRequest对象的行为 when(request.getParameter("username")).thenReturn("testuser"); // 创建一个MyServlet实例并调用doGet方法 MyServlet servlet = new MyServlet(); servlet.doGet(request, null); // 验证MyServlet的行为是否符合预期 verify(request).getParameter("username"); Assert.assertEquals(servlet.getOutput(), "Hello, testuser!"); 在这个例子中,我们使用@Mock注解来创建HttpServletRequest对象的模拟实例。然后,我们使用Mockito的when方法来指定当调用request.getParameter("username")方法时应该返回什么值。接着,我们创建一个MyServlet实例并调用doGet方法,最后使用Mockito的verify方法来验证request.getParameter("username")是否被调用了一次。最后,我们使用TestNG的Assert类来验证MyServlet的输出是否符合预期。