【问题标题】:MockitoJUnitRunner is deprecated不推荐使用 MockitoJUnitRunner
【发布时间】:2017-06-14 01:17:32
【问题描述】:

我正在尝试使用 @InjectMocks@Mock 进行单元测试。

@RunWith(MockitoJUnitRunner.class)
public class ProblemDefinitionTest {

    @InjectMocks
    ProblemDefinition problemDefinition;

    @Mock
    Matrix matrixMock;    

    @Test
    public void sanityCheck() {
        Assert.assertNotNull(problemDefinition);
        Assert.assertNotNull(matrixMock);
    }
}

当我不包含@RunWith 注释时,测试会失败。但是

类型 MockitoJUnitRunner 已弃用

我使用的是 Mockito 2.6.9。我该怎么办?

【问题讨论】:

    标签: java mockito deprecated


    【解决方案1】:

    org.mockito.runners.MockitoJUnitRunner 现在确实已弃用,您应该改用org.mockito.junit.MockitoJUnitRunner。如您所见,只有包名发生了变化,类的简单名称仍然是MockitoJUnitRunner

    摘自org.mockito.runners.MockitoJUnitRunner的javadoc:

    移动到MockitoJUnitRunner,这个类将被删除 Mockito 3

    【讨论】:

    • 谢谢,为我节省了几个小时。
    【解决方案2】:

    你可以试试这个:

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);
    }
    

    因为你添加了@Before注解,你的mock对象可以是新的并且可以多次记录,并且在所有的测试中你可以给对象新的属性。但是,如果您想一次性记录模拟对象的行为,请添加@BeforeCLass

    【讨论】:

      【解决方案3】:

      还有一个@Rule 选项:

      @Rule 
      public MockitoRule rule = MockitoJUnit.rule();
      

      或者在 Kotlin 中:

      @get:Rule
      var rule = MockitoJUnit.rule()
      

      【讨论】:

        【解决方案4】:

        您可以尝试导入以下内容:

        import org.mockito.runners.MockitoJUnitRunner;
        

        另外,如果您使用的是Eclipse,只需按Ctrl + Shift + O,它就会自动导入它。

        【讨论】:

          【解决方案5】:

          当我将依赖项更新到最新版本时,我设法解决了这个问题:

          def mockito_version = '2.28.2'
          
          // For local unit tests on your development machine
          testImplementation "org.mockito:mockito-core:$mockito_version"
          
          // For instrumentation tests on Android devices and emulators
          androidTestImplementation "org.mockito:mockito-android:$mockito_version"
          

          然后我通过替换命令更改了导入(Mac:cmd+Shift+R Windows:Ctrl+Shift+R) 来自

          import org.mockito.runners.MockitoJUnitRunner; 
          

          import org.mockito.junit.MockitoJUnitRunner;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-04-22
            • 2012-11-14
            • 2019-11-08
            • 2019-11-08
            • 2020-01-03
            • 2011-12-02
            • 2015-01-24
            相关资源
            最近更新 更多