迁移问题从Junit 4到Junit 5

Sam*_*Sam 6 junit junit4 mockito junit5

我正在将我的代码库从junit4迁移到junit5.我在我的testcase中使用了mockito.Below是我用于依赖的不同版本.

<junit.jupiter.version>5.2.0</junit.jupiter.version>
<junit.platform.version>1.2.0</junit.platform.version>
<org.mockito.version>1.10.19</org.mockito.version>

   <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-junit-jupiter</artifactId>
        <version>2.19.0</version>
        <scope>test</scope>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

我使用了注释@RunWith(MockitoJUnitRunner.class)来运行我的mockito代码.替换为@ExtendWith(MockitoExtension.class)

但是,当我运行测试用例时,我得到以下错误.任何解决此问题的建议.我怀疑是否有任何依赖版本问题导致此问题.

java.lang.NoClassDefFoundError: org/mockito/quality/Strictness
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
at java.lang.Class.getConstructor0(Class.java:3075)
at java.lang.Class.getDeclaredConstructor(Class.java:2178)
at..
Run Code Online (Sandbox Code Playgroud)

谢谢 - 萨姆

gly*_*ing 9

JUnit5 MockitoExtension使用org.mockito.quality.Strictnessso以便使用MockitoExtension你需要使用mockito-core其中包含的版本org.mockito.quality.Strictness.mockito-core:1.10.19不包含该类,因为该类是在Mockito 2.x中添加的.所以,为了使用MockitoExtension你需要至少使用2.x版本mockito-core.

该文档的Mockito没有更加明确,但我怀疑的期望是,你会使用相同版本的Mockito为mockito-coremockito-junit-jupiter.

以下依赖项将允许您MockitoExtension成功使用JUnit5 :

<org.mockito.version>2.19.0</org.mockito.version>

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>${org.mockito.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-junit-jupiter</artifactId>
    <version>${org.mockito.version}</version>
    <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)