Android 伪装HTTP层进行改造的替代方案

Android 伪装HTTP层进行改造的替代方案,android,mocking,robolectric,retrofit,Android,Mocking,Robolectric,Retrofit,在过去的几天里,我一直在努力编写一些测试来检查我的一些类的反序列化代码是否正常工作 我有一个REST服务类的java包,它通过改造与我们的API通信。我的想法是使用Robolectric FakeHttpLayer来提供某些响应,并编写一组测试来检查我的服务类是否有效地从JSON响应创建模型对象 似乎robolectric没有拦截网络调用(即,我总是从我们的API获取实时数据)。我不知道这是为什么 到目前为止,有没有其他方法来测试我写的东西?对我来说,测试这一层非常重要,因此编写我们应用程序逻

在过去的几天里,我一直在努力编写一些测试来检查我的一些类的反序列化代码是否正常工作

我有一个REST服务类的java包,它通过改造与我们的API通信。我的想法是使用Robolectric FakeHttpLayer来提供某些响应,并编写一组测试来检查我的服务类是否有效地从JSON响应创建模型对象

  • 似乎robolectric没有拦截网络调用(即,我总是从我们的API获取实时数据)。我不知道这是为什么
  • 到目前为止,有没有其他方法来测试我写的东西?对我来说,测试这一层非常重要,因此编写我们应用程序逻辑层的人有一些可靠的东西可以使用,而我则着手处理应用程序的其他部分
谢谢

分别测试这些

  • 序列化应该直接使用您选择的序列化机制进行测试

    例如,如果您使用的是JSON和Gson,那么您可以将反序列化和验证结果的JSON字符串封装起来

  • 基于网络响应的行为可以通过使用在测试中使用的改装接口的假实现来测试,而不是调用
    RestAdapter.create

    class FakeFoo implements Foo { // Foo is your Retrofit interface
      @Override public FooResponse doSomething(FooRequest request) {
        return new FooResponse("Fake", "Data");
      }
    }
    
  • 分别测试这些

  • 序列化应该直接使用您选择的序列化机制进行测试

    例如,如果您使用的是JSON和Gson,那么您可以将反序列化和验证结果的JSON字符串封装起来

  • 基于网络响应的行为可以通过使用在测试中使用的改装接口的假实现来测试,而不是调用
    RestAdapter.create

    class FakeFoo implements Foo { // Foo is your Retrofit interface
      @Override public FooResponse doSomething(FooRequest request) {
        return new FooResponse("Fake", "Data");
      }
    }
    

  • 很好的反馈,杰克!我一定要试试这个!很好的反馈,杰克!我一定要试试这个!