当前位置: 首页 > 知识库问答 >
问题:

在mockito.extension中找不到JUnit 5 throw方法

索曾琪
2023-03-14

我正在将一个测试从JUnit4更新到JUnit5(Jupiter)。

@beforeeach等普通注释调整中,我使用@extendwith(MockitoExtension.class)来运行@mocks。

代码如下所示:

    import org.junit.jupiter.api.BeforeEach;
    import org.junit.jupiter.api.Test;
    import org.junit.jupiter.api.extension.ExtendWith;
    import org.mockito.Mock;
    import org.mockito.junit.jupiter.MockitoExtension;

    @ExtendWith(MockitoExtension.class)
    public class SomeTest {

        private static final String TEST = "test";

        @Mock
        RetailerService retailerService;
        private Delivery delivery;

        @BeforeEach
        public void setUp() {
            when(retailerService.getMessage(any(String.class))).thenReturn(TEST);
            delivery = new Delivery(retailerService);
        }

        @Test
        public void should_have_delivery() {
            assertEquals(getExpectedDeliveriesDTOs(), delivery.toDtos());
        }

    }

我在以下注释:https://stackoverflow.com/a/49655834/2182500中看到,此错误可能是由于在项目POM中有不同版本的junit-jupiter-api作为依赖项,而在mockito-junit-jupiter使用的运行范围中有不同版本的junit-jupiter

所以我保证为Jupiter导入相同的版本依赖项,但我仍然看到相同的错误。

pom条目。在肯定的水平上:

<build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <configuration>
                            <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
                            <skipTests>true</skipTests>
                        </configuration>
                        <dependencies>
                            <dependency>
                                <groupId>org.junit.platform</groupId>
                                <artifactId>junit-platform-surefire-provider</artifactId>
                                <version>1.1.1</version>
                                <scope>test</scope>
                            </dependency>
                            <dependency>
                                <groupId>org.junit.jupiter</groupId>
                                <artifactId>junit-jupiter-engine</artifactId>
                                <version>5.1.0</version>
                            </dependency>
                        </dependencies>
                    </plugin>
                </plugins>
            </build>

在JUnit级别:

 <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-junit-jupiter</artifactId>
            <version>2.17.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-api</artifactId>
            <version>5.1.0</version>
            <scope>test</scope>
        </dependency>

以前有没有人碰到过这个,能帮上忙?提前谢谢你。

共有1个答案

董庆
2023-03-14

原来这个错误与Mockito依赖版本有关。因此,虚化嘲笑。

我所在的项目有一个旧版本的mockito-core工件,但没有相关的mockito-junit-jupiter版本。由于Junit4测试模拟注释,项目需要维护mockito-core。通过更新mockito core的版本和Mockito-Junit-Jupiter使用相同的版本来解决这个问题。像这样:

    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>3.0.0</version>
        <scope>test</scope>
    </dependency>
 类似资料:
  • 问题内容: 我已经在这个问题上停留了一段时间,我们将为您提供任何帮助。我正在运行带有ElasticSearch高级REST客户端版本的Spring Boot版本,并将版本用于Spring-Data- Elasticsearch版本。我收到下面的错误。我已经尝试了以下修复方法,但没有解决。 多次更改Spring Boot版本 多次更改ES版本 我已经清除了.m2文件夹,并多次重新下载了Maven依赖

  • 我已经在这个问题上坚持了一段时间,感谢任何帮助。我正在运行弹性搜索高级REST客户端版本的Spring Boot版本,并在Spring Data-Elasticsearch版本中使用version。我得到下面的错误。我尝试了以下尝试来修复,但都没有。 多次更改Spring启动版本 多次更改ES版本 我已经结清了我的债务。m2文件夹并多次重新下载maven依赖项 我下面要讨论的问题是 试图调用不存在

  • 所以我正在学习Selenium用于Java的测试自动化,我有一个错误消息,比如IntelliJ中的标题“windows()”是红色的。 我试图导入org.openqa.selenium.WebDriver。选项,但它是灰色的,所以没用。 我能做些什么来解决这个问题? 提前谢谢

  • 我想使用AndroidStudio 4.0金丝雀3 如功能列表中所述,功能列表中提到: Android Studio现在支持使用大量Java 8语言API,而不需要应用程序的最低API级别。 在模块的构建中,将带有参数的方法添加到对象中。格雷德尔档案。 像这样: 我原以为它可以正常工作,但它会出现以下错误:

  • 问题内容: 我正在使用登录功能,但是遇到了我无法弄清的错误。 这是我的模型登录类: 最后一个函数给出错误“ 在类中找不到方法’close’ ”,“ 在主题类中找不到引用的方法。 ” 这是我的数据库类: 路径是正确的,事实并非如此。可能是什么错误? 问题答案: PhpStorm无法确定您的字段是什么类型。您可以通过简单的PHPDoc注释提供typehint来提供帮助:

  • 我得到一个错误: 错误:在类testPackage.Method1中找不到Main方法,请将Main方法定义为:public static void Main(字符串[]args)或JavaFX应用程序类必须扩展JavaFX.application.application“ 该计划是: