java - 使用 junit 进行多实例测试

标签 java unit-testing junit

我在服务器套接字上有一个 Java 服务器。客户端连接到这个服务器套接字,并通过输入/输出对象流进行交换。现在我需要测试应用程序的可伸缩性。这意味着我需要运行相同的测试来发出请求,并测试服务器是否能够处理来自随机客户端的请求。

下面基于 junit 的测试用例是测试随机连接/请求的正确方法吗?我感觉下面的代码正在顺序测试客户端。

我阅读了一些链接,但对我不起作用

Creating a JUnit testsuite with multiple instances of a Parameterized test

public class ScalePostiveTestCases {
SendQueue sendQueue;
Socket clientSocket = null;

public static void main(String[] args) throws Throwable {       
    testSearching() ;
}

@SuppressWarnings("unchecked")
private static void testSearching() throws ClassNotFoundException, InstantiationException, IllegalAccessException {
    TestSuite tests = new TestSuite();
    for (int i = 0; i < 99; i++) {
        Class<SingleSearchTest> singleSearchTest = (Class<SingleSearchTest>) ClassLoader
                .getSystemClassLoader().loadClass(
                        "SingleSearchTest");

        SingleSearchTest singleSearch = singleSearchTest.newInstance();
        tests.addTest(singleSearch);
    }
    TestRunner.run(tests);
}
public class SingleSearchTest extends TestCase {
    static SingleSearchTest singleSearch    = null;
    private String          device, connection, user;
    private ClientSession   clientSession;
    private SendQueue       sendQueue;

    public static SingleSearchTest main(String args[]) {
        singleSearch = new SingleSearchTest();
        return singleSearch;
    }

    public SingleSearchTest() {
       super("testSingleSearch");
       Random rand = new Random();
    }
}

最佳答案

您正在创建许多测试,每个测试都有一个客户端。

您需要做的是创建多个并发执行的客户端的简单测试。


在我的单元测试中;

  • 将服务器作为一个单独的线程启动(这样我也可以将其关闭)
  • 使用 ExecutorService 作为客户端的线程池
  • 有一个循环来创建所有任务,每个任务创建一个客户端并执行它们。完成任务后返回。
  • 关闭 ExecutorService。
  • 检查所有任务并检查它们是否通过。如果他们抛出错误,错误将在当前(测试)线程中抛出。

关于java - 使用 junit 进行多实例测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8534516/

相关文章:

java - 删除完整类名的快捷方式

javascript - 断言错误 : expected {} to be a function

maven-2 - Junit 运行时不选择文件 src/test/resources。对于某些依赖 jar 所需的文件

java - 在 IntelliJ IDEA 中使用 JUnit RunListener

javascript - 使用 Jest 测试 React/Redux 组件

java - URLConnection 上的 JUnit 测试,使用 EasyMock?

java - 使用java生成图像条形码并作为url保存到mysql中

java - 理解 jmh 中的不对称

java - 矩形类函数 getX()、getY() 等以 double 返回

c# - Polly 验证单元测试中 httpclient 超时/重试的次数