[英]How to unit test android app which requires a web service calls
以下是我在項目中使用的工具和框架。
我還在我的項目中實現了MVP設計模式。
我只是想知道我是否需要使用真正的后端或者只需要模擬后端以進行測試。 如果我需要模擬后端什么是重新開始的工具
swagger提供任何模擬Web服務的工具
什么是單元測試android(MVP)主要是演示者的最佳實踐
我在這里發帖是因為我沒有在網上找到任何正確答案所有這些問題
我為演示者寫了一個示例測試用例,如果我做錯了,請告訴我
主持人
public void doLogin(String userName, String password) {
loginView.showProgressBar(true);
AuthenticationcontrollerApi authService = mDataClient.createService(AuthenticationcontrollerApi.class);
UserCredentials userCredentials = new UserCredentials();
userCredentials.setUserName(userName);
userCredentials.setPassword(password);
authService.authorizeUsingPOST(userCredentials, new Callback<String>() {
@Override
public void success(String s, Response response) {
loginView.showProgressBar(false);
loginView.onLoginSuccess(true, s);
}
@Override
public void failure(RetrofitError error) {
loginView.showProgressBar(false);
loginView.onLoginFailure(error);
}
});
}
測試
@RunWith(MockitoJUnitRunner.class)
public class LoginPresenterTest {
@Mock
protected AuthenticationcontrollerApi authService;
@Mock
protected DataClient mDataClient;
@Mock
LoginView loginView;
private LoginPresenter loginPresenter;
@Before
public void setUp() {
loginPresenter = new LoginPresenter(mDataClient);
loginPresenter.attachView(loginView);
when(mDataClient.createService(AuthenticationcontrollerApi.class)).thenReturn(authService);
}
@Test
public void loginSuccessful() {
String a = "";
loginPresenter.doLogin("abc", "abc");
verify(loginView).showProgressBar(true);
}
@After
public void detachView() {
loginPresenter.detachView();
}
}
提前致謝
單元測試應測試“單元”。 這意味着所有依賴項都應該由您明確控制(例如模擬)。
有集成測試可以測試不同部分的集成行為,但這是一個不同的主題。
讓我們來看看你的問題:
我只是想知道我是否需要使用真正的后端或者只需要模擬后端以進行測試。 如果我需要模擬后端什么是重新開始的工具
您不需要正在測試單元的真實后端。 您不希望您的測試受到后端錯誤的影響。
Mockito是推薦的工具。 你只是模仿行為(你在樣本測試中開始做什么)。
swagger提供任何模擬Web服務的工具
除了Mockito,我認為你不需要任何特別的東西。
什么是單元測試android(MVP)主要是演示者的最佳實踐
在演示者中,您可以模擬視圖和數據源(在您的情況下是Web服務)並編寫測試,為測試場景提供模擬數據。 通過這種方式,您可以測試演示者的業務邏輯,而不是Web服務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.