我的活动严重依赖从RESTful服务器获取的数据。 为了测试,目前我绕过http请求并将json对象移交给活动 - 手动。
然而,这种方法变得越来越麻烦,我想知道 - 在测试依赖于服务器 - 客户端通信的活动时是否有任何好的策略?
答案 0 :(得分:1)
您可以创建模拟服务器。你可以在两个层面上做到这一点:
很好地将您的服务器访问代码打包在客户端上,因此您可以使用不接触任何内容的模拟服务器访问代码替换它,只返回结果,然后使用模拟测试客户端版本-server访问。
实现一个返回数据的实际模拟服务器,并将客户端指向它。
我认为第二种选择更好,因为它允许您在各种条件下测试客户端应用程序 - 包括无通信。
答案 1 :(得分:1)
您应该构建可以轻松使用集成测试的活动。 为此,您必须单独构建模块,它们之间没有依赖关系。
例如,如果您使用Activity来中继从服务器获取的某些数据,那么您的组件应如下所示:
public class AppActivity extends Activity {
private DataFetcher fetcher;
public AppActivity() {
//use this for real
fetcher = new ServerDataFetcher();
//or use this for tests
fetcher = new MockDataFetcher();
//you can even select it using DI frameworks
}
}
public interface DataFetcher {
public Data fetchData();
}
public class ServerDataFetcher implement DataFetcher{
public Data fetchData() {
//get your data from server
}
}
public class MockDataFetcher implement DataFetcher{
public Data fetchData() {
//return a pre-fetched data
}
}