如果API使用Login函数,我有下一个测试代码:
@RunWith(RobolectricTestRunner.class)
public class LoginTest {
LoginRespository profileRepository = new LoginRespository(RuntimeEnvironment.application);
@Test
public void testLogin() {
MutableLiveData<ApiResponse<LoginData>> data = new MutableLiveData<>();
String email = "[email protected]";
String password = "[email protected]";
profileRepository.login(data, email, password);
}
}
API返回的数据保存到data
中,但我不知道如何将观察者放在这里,因为我需要上下文,也许testLogin没有完成。
任何的想法?
谢谢
最后,我可以使用robolectric测试下一个代码:
@RunWith(RobolectricTestRunner.class)
public class DownloadProfileTest {
LoginRespository profileRepository = new LoginRespository(RuntimeEnvironment.application);
private ActivityController<LoginActivity> controller;
private LoginActivity activity;
private void createLoginActivityWithIntent() {
activity = controller
.create()
.start()
.get();
}
@Before
public void setUp() {
controller = Robolectric.buildActivity(LoginActivity.class);
}
@Test
public void testUtilsIsValidEmail() {
MutableLiveData<ApiResponse<LoginData>> data = new MutableLiveData<>();
String email = "[email protected]";
String password = "[email protected]";
profileRepository.login(data, email, password);
createLoginActivityWithIntent();
data.observe(activity, (@Nullable ApiResponse<LoginData> loginResponse) -> {
assertTrue(loginResponse != null);
});
}
}