在使用 javassist 时,调用 cc.toClass() 方法就拿到类实例了,你再好好看看吧,去敲了试试
Class executor = cc.toClass();
TestNG testNG = new TestNG(false);
testNG.setSuiteThreadPoolSize(1);
testNG.setThreadCount(1);
testNG.setTestClasses(new Class[]{TestExecutor.class});
testNG.run();
可以的,使用 cglib 动态生成的,可以通过 Class.forName 进行加载,也可以借助 javassist 进行动态生成类,参看我的另一篇文章:https://testerhome.com/topics/18811
你是说这个吗?
testNG.setThreadCount(Runtime.getRuntime().availableProcessors() + 1);
没达到效果噢
public class Demo1 {
@DataProvider
public Object[][] getData() {
Object[][] objects = new Object[3][3];
for (int i=0; i<objects.length; i++) {
for (int j=0; j<objects[i].length; j++) {
objects[i][j] = i + "-" + j;
}
}
return objects;
}
@Test(dataProvider = "getData", threadPoolSize = 4)
public void runData(Object... objects) {
System.out.println(System.currentTimeMillis());
System.out.println(Thread.currentThread().getName());
for (int i=0; i<objects.length; i++) {
System.out.println(objects[i]);
ThreadUtils.sleep(100);
}
System.out.println();
}
public static void main(String[] args) {
TestNG testNG = new TestNG(false);
testNG.setThreadCount(Runtime.getRuntime().availableProcessors() + 1);
testNG.setPreserveOrder(true);
testNG.setTestClasses(new Class[]{Demo1.class});
testNG.run();
}
}
嗯,需要再结合业务深入思考一下,
另外从接口请求类型角度考虑,
比如,有 AB 两个接口,当这两个都是 GET 接口时,视为同一种场景,
总的来说,需要把总的量给控制在一定范围内来跑
治本方法:
治标方法:
我试了一下,未达到并行执行的效果,它是串行的,我的测试代码如下:
@DataProvider
public Object[][] getData() {
Object[][] objects = new Object[3][3];
for (int i=0; i<objects.length; i++) {
for (int j=0; j<objects[i].length; j++) {
objects[i][j] = i + "-" + j;
}
}
return objects;
}
@Test(dataProvider = "getData", threadPoolSize = 4)
public void runData(Object... objects) {
System.out.println(System.currentTimeMillis());
System.out.println(Thread.currentThread().getName());
for (int i=0; i<objects.length; i++) {
System.out.println(objects[i]);
ThreadUtils.sleep(100);
}
System.out.println();
}
嗯,之前有想过,忘记为啥没去试这条路了
嗯,你说的对,在本例中,并没有使用到动态代理的特性,去增加前置、后置、或环绕什么的方法,准确来说是动态生成了一个子类。
多线程来实现是指下面这个参数吗?从注解来看,是跑这个方法多次
public @interface Test {
/**
* The size of the thread pool for this method. The method will be invoked
* from multiple threads as specified by invocationCount.
* Note: this attribute is ignored if invocationCount is not specified
*/
public int threadPoolSize() default 0;
}
噢?说说看,怎么用的?我学习下
这位大神,你在讲什么?
跟青云有关系,现在都用的云服务,然而云服务商相关的配置功能并没有到位
espresso 是支持 webview 的啊
嗯,我问问开发去
嗯,看请求头是有这个参数的,可能要问下后端同学了,可能服务端未配置
是啊,上面提到的场景,不是有先后关系吗?也不存在并发执行,所以根本不需要用 ThreadLocal,给我的感觉,就是为了用而用啊。至于支付业务中的应用,得看具体场景,再具体一点,嘿嘿
这个感觉用一个全局 Map 就可以了啊,还是没领会到用 ThreadLocal 的好处。
据我理解,ThreadLocal 是多个线程一起跑的时候,对同一个变量,每个线程希望有自己的一份数据时,才用到。
举例说明一下,使用 ThreadLocal 存储多接口公用数据的场景来
对数据进行统计分析啊
感谢推荐
之前下过 anyproxy,感觉不是太友好,可能我还没摸熟
browsermob 就先踩个坑,暂时还没有那么多精力搞脚本,主要还在搞业务的功能测试
这里面还有 jquery 的写法啊,有意思
嗯,看过你的帖子了,论坛中唯一的一篇,想要了解一下,为什么换 AnyProxy 的?
目前来看,拿到 Har 数据,是比较方便解析的,其中还有一些性能数据后续可以用起来
看上面的问题分析应该能清楚啊,通过 appium 获取的坐标在屏幕外面,获取 webview 控件的宽高,进行等比例缩放,这是当时的方法,现的的话,可以通过 espresso 点击
我理解的话这个 web 和移动端应该差不多
嗯嗯,可以搞的,我也是基于 okhttp 封装的请求