Java 使用单例HTTPClient和并行测试执行的API测试自动化

Java 使用单例HTTPClient和并行测试执行的API测试自动化,java,web-services,automation,automated-tests,apache-httpclient-4.x,Java,Web Services,Automation,Automated Tests,Apache Httpclient 4.x,我正在尝试使用HTTPClient自动化项目中的API,并计划使用一个可以由各种请求共享的单例客户端。下面是我的singleton类的代码: public class Login { private static Login Login = null; private static HttpClient client = null; public static Login singletonClient() throws IOException { if

我正在尝试使用HTTPClient自动化项目中的API,并计划使用一个可以由各种请求共享的单例客户端。下面是我的singleton类的代码:

public class Login {
    private static Login Login = null;
    private static HttpClient client = null;

    public static Login singletonClient() throws IOException {
        if (Login == null) {
            Login = new Login();

            client = new HttpClient();

            String username = "username";
            String password = "password";
            String server = "http://www.myserver.com";
            Integer port = "8080";

            Credentials defaultcreds = new UsernamePasswordCredentials(username, password);
            client.getState().setCredentials(new AuthScope(server, port), defaultcreds);
            client.getParams().setAuthenticationPreemptive(true);
        }
        return Login;
    }

    public HttpClient getClient() {
        return client;
    }
}
在我的测试中使用的方式是:

HttpClient client = Login.singletonClient().getClient();
考虑到我必须在我的项目中自动化10个不同的API,并且所有API的用户名、密码都保持不变,我对这个实现有以下问题:

  • 我将并行运行我的测试(假设每个API有单独的类,所有的类都需要并行运行)。我可以使用单例HTTP客户端或静态HTTP客户端并行运行测试吗
  • 如果我不能并行运行我的测试,摆脱单例客户机还是静态客户机好吗
  • 请注意,我是Java新手,如果我遗漏/混淆了一些东西,请原谅


    提前谢谢

    您打算让您的HttpClient成为一个单例客户端吗?为什么不创建一个构建器,为每个API创建新的客户端实例呢?嗨,当我在线参考一些文档时,我读到“不要为每个请求重新创建HTTPClient。尽可能重用HTTPClient”。所以,我想让它成为单身汉。但是没有提到这是否适用于并行/并发请求。根据我的理解,我可以为每个类拥有一个单独的HTTPClient。但是,即使使用Singleton类也能做到这一点吗?