如何编写Junit测试用例来测试Google api的使用情况(目录api)

时间:2015-08-14 04:20:04

标签: junit junit4 junit-rule

目前代码就是这样开始的

Directory directory = DirectoryServiceFactory.getDirectoryService();

directory.groups().get(someEmail).execute();

我不知道如何为它编写测试用例,或者我是否应该编写测试用例。在这里编写测试用例究竟意味着什么。

1 个答案:

答案 0 :(得分:1)

理论上,您应该只测试自己的代码。如果必须测试框架,则使用错误的框架。远程连接和使用Google API之类的东西是您只能在集成测试中测试的,而不是单元测试。

因此,在这种情况下,我会尝试以一种允许您放置连接Google API的类的模拟版本并在其中执行某些操作的方式封装您自己的代码,例如通过编写{{ 1}}或类似的东西:

GoogleAPIConnector Interface

您将创建此界面的一个“真实”实现,实际连接到Google并完成实际工作。测试这将是集成测试的范围。可能看起来像这样......

public interface GoogleAPIConnector {

    void connect();
    String doSomeWork(String email);

}

对于单元测试,您可以使用返回“假”数据而不是真实交易的模拟对象,允许您在假设谷歌连接有效的情况下运行测试,测试您在其周围编写的所有内容,例如(和Mockito一起):

public class GoogleAPIConnectorImpl {

    private Directory directory;

    @Override
    public void connect() {
        this.directory = DirectoryServiceFactory.getDirectoryService();
    }

    @Override
    public String doSomeWork(String email){
        return this.directory.groups().get(email).execute();
    }

}

这样,您的单元测试速度很快,而且不依赖于Google API(如果您的网络已关闭,它们仍会成功)。您的集成测试速度较慢,并且依赖于Google API,但由于它们不必经常运行(并且不必使构建失败),这没关系。