所以我整天都在努力让Mockito为我的Android项目工作.我在Gradle构建文件中添加了所有内容:
androidTestCompile 'org.mockito:mockito-core:2.0.29-beta'
androidTestCompile "junit:junit:4.12-beta-3"
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
Run Code Online (Sandbox Code Playgroud)
并尝试运行一个没有真正做任何事情的测试:
@RunWith(MockitoJUnitRunner.class)
public class LoginActivityTest extends
ActivityInstrumentationTestCase2<LoginActivity> {
private LoginActivity loginActivity;
private EditText et_email;
private EditText et_password;
private Button btn_login;
@Mock
SpiceManager manager;
public LoginActivityTest(){
super(LoginActivity.class);
}
@Override
public void setUp() throws Exception {
super.setUp();
loginActivity = getActivity();
MockitoAnnotations.initMocks(this);
//manager = mock(SpiceManager.class);
loginActivity.spiceManager = manager;
et_email = (EditText) loginActivity.findViewById(R.id.et_email);
et_password = (EditText) loginActivity.findViewById(R.id.et_password);
btn_login = (Button) loginActivity.findViewById(R.id.btn_login);
}
@Override
public void tearDown() throws Exception {
super.tearDown();
}
public void testLoginEmpty() throws …Run Code Online (Sandbox Code Playgroud) 我在仪器测试中使用@Mock注释时遇到了麻烦.
这是我的gradle依赖项:
androidTestCompile 'org.mockito:mockito-core:1.10.19'
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
Run Code Online (Sandbox Code Playgroud)
这是一段代码示例:
@Mock View mockView
@Before
public void setup() {
MockitoAnnotation.initMocks(this);
...
}
Run Code Online (Sandbox Code Playgroud)
这与崩溃
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at com.google.dexmaker.mockito.DexmakerMockMaker.getInvocationHandlerAdapter(DexmakerMockMaker.java:80)
at com.google.dexmaker.mockito.DexmakerMockMaker.getHandler(DexmakerMockMaker.java:75)
...
Run Code Online (Sandbox Code Playgroud)
但是,这有效
View mockView
@Before
public void setup() {
mockView = Mockito.mock(View.class);
...
}
Run Code Online (Sandbox Code Playgroud)
任何人都有任何想法在这里发生了什么?