为什么 mockito 的 @Mock 注释在 mock() 方法工作时失败



这是我的build.gradle中的相关内容:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    androidTestCompile "org.mockito:mockito-core:1.10.19"
    androidTestCompile 'com.google.dexmaker:dexmaker:1.0'
    androidTestCompile('com.google.dexmaker:dexmaker-mockito:1.0') {
        exclude module: 'hamcrest-core'
        exclude module: 'objenesis'
        exclude module: 'mockito-core'
    }
    androidTestCompile 'org.hamcrest:hamcrest-library:1.3'
}

当我使用@Mock注释来声明模拟时,它是空的。 但是当我使用

context = mock(Context.class);

然后我得到一个正确模拟的对象。 如果这很重要,我正在 Junit-3 测试用例中使用它。

为什么注释不起作用?

如果使用 JUnit 3,则必须在测试的设置方法中使用MockitoAnnotations

public class ATest extends TestCase {
    public void setUp() {
        MockitoAnnotations.initMocks(this);
    }
    // ...
}

注释不是开箱即用的,你必须指示 JUnit 做某事。有关完整参考,对于 JUnit 4,您还有其他推荐的选项:

使用 JUnit 跑步者

@RunWith(MockitoJUnitRunner.class)
public class ATest {
    @Mock Whatever w;
    // ...
}

或者使用 JUnit 规则

public class ATest {
    @Rule MockitoRule mockitoRule = MockitoJUnit.rule();
    @Mock Whatever w;
    // ...
}

相关内容

  • 没有找到相关文章

最新更新