在 android 应用程序中使用测试数据

Using test data in android application

目前我正在开发 android 应用程序。此应用程序使用的数据由网络服务器提供。现在我想测试应用程序并使用测试数据对其进行一些尝试,导致来自服务器的真实数据动态变化,我并不总是能够测试特定功能或查看特定事物。我想到的两个选项是:

我认为第二种方式是更好的选择。也许还有其他替代方法可以这样做?你怎么看这个?

提前致谢。

我在这里看到的最好方法是进行依赖注入。你的建议有什么问题(简要):

  1. 您将破坏连接器的逻辑。连接器不得依赖于您的测试。

  2. 您的想法是正确的,但是如果您失去连接或服务器出现故障,您会怎么做。这种方法使您的测试有点不稳定。测试结果将取决于服务器的状态和测试 运行 的计算机的网络连接,也可能取决于其他因素。那是错的。如果你的代码写得很好,测试必须总是成功,我的意思是不管其他任何代码。

所以我建议从你的连接器中抽象出来。

public interface IConnector {
    // e.g.
    public JSONObject getData(String what);
}

public class Connector implements IConnector {
    public JSONObject getData(String what) {
        // actual implementation that is already written
        // here you make requests to server and so forth
    }
}

// mock implementation of your api
public class TestConnector implements IConnector {
    public JSONObject getData(String what) {
        // predictable behaviour without requests to server
    }
}

public class MyActivity extends Activity {
    public IConnector connector = new Connector();

    /**
     * This method substitutes implementation of connector.
     * Use this for testing purposes.
     */
    public void setConnector(IConnector impl) {
        connector = impl;
    }

    //rest of the code...
}

然后您将在测试中获得可预测和确定性的行为,而无需对代码进行大量更改。

顺便说一句,我听说了 Dagger。这是用于依赖注入的库,在这种情况下应该有所帮助。但是我没有时间去尝试,所以不能说出确切的信息。

希望这对您有所帮助。