为什么 Mockito 的 @Mock 注释在 mock() 方法工作时失败
Why Mockito's @Mock annotation fails when mock() method works
这是我 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 注解来声明一个mock 时,它是null。但是当我使用
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;
// ...
}
这是我 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 注解来声明一个mock 时,它是null。但是当我使用
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;
// ...
}