如何编写Junit测试用例来测试GoogleAPI(目录api)的使用
目前代码是这样开始的如何编写Junit测试用例来测试GoogleAPI(目录api)的使用,junit,junit4,junit-rule,Junit,Junit4,Junit Rule,目前代码是这样开始的 Directory directory = DirectoryServiceFactory.getDirectoryService(); directory.groups().get(someEmail).execute(); 我不知道如何为它编写测试用例,甚至不知道是否应该编写测试用例。在这里编写测试用例到底意味着什么 理论上,您应该只测试自己的代码。如果您必须测试您的框架,那么您使用的框架是错误的。与Google API的远程连接和使用是您只能在集成测试中测试的东西
Directory directory = DirectoryServiceFactory.getDirectoryService();
directory.groups().get(someEmail).execute();
我不知道如何为它编写测试用例,甚至不知道是否应该编写测试用例。在这里编写测试用例到底意味着什么 理论上,您应该只测试自己的代码。如果您必须测试您的框架,那么您使用的框架是错误的。与Google API的远程连接和使用是您只能在集成测试中测试的东西,而不是单元测试 因此,在本例中,我将尝试以一种方式封装您自己的代码,允许您将连接Google API的类的模拟版本放入其中,并在其中执行一些操作,例如编写
GoogleAppConnector接口
或类似的内容:
public interface GoogleAPIConnector {
void connect();
String doSomeWork(String email);
}
您将创建此接口的一个“真实”实现,它实际上连接到Google并完成真正的工作。测试这将是集成测试的范围。可能看起来像这样
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连接工作的情况下运行测试,测试围绕它编写的所有内容,例如(使用Mockito):
这样,您的单元测试将是快速的,并且不依赖于GoogleAPI(如果您的网络关闭,它们仍然会成功)。您的集成测试速度较慢,并且依赖于GoogleAPI,但由于它们不必经常运行(也不必使构建失败),这没关系
GoogleAPIConnector connector = mock(GoogleAPIConnector.class);
when(connector.doSomeWork("someone@example.com")).thenReturn("hello world");
SomeClass someClass = new SomeClass(""someone@example.com");
someClass.setConnector(connector);
String result = someClass.work();
assertThat(result, equalTo("hello world");
verify(connector, times(1)).doSomeWork("someone@example.com");