我在服务器套接字上有一个
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.
>完成所有任务并检查它们是否通过.如果他们抛出错误,则会在当前(测试)线程中抛出错误.