在前面的文章中,我们已经知道,nGrinder支持groovy和Jython脚本,今天学习一下ngrinder中的groovy脚本结构。
ngrinder中的groovy脚本结构类似 junit,同时在junit的基础之上封装了自己的注解,用来控制脚本的运行。
一、运行逻辑图如下:
二、各注解的使用比较
注解 | 描述 | 应用范围 | 用例 |
---|---|---|---|
@BeforeProcess | 定义在进程被调用之前应执行的行为 | static method | 加载被线程共享的资源文件,定义 GTest 等 |
@AfterProcess | 定义在进程被终止之前应执行的行为 | static method | 关闭资源文件 |
@BeforeThread | 定义在每个线程被调用之前应执行的行为 | member method | 登录目标系统,建立线程内的一些值,例如,Cookie 处理 |
@AfterThread | 定义在每个线程被终止之前应执行的行为 | member method | 退出系统 |
@Before | 定义每个被 @Test 注解的方法被执行前应执行的行为 | member method | 每个被 @Test 注解的方法的共享逻辑、变量设置 |
@After | 定义每个被 @Test 注解的方法被执行后应执行的行为 | member method | 很少使用 |
@Test | 定义测试行为,被执行多次 | member method | 测试体 |
三、关注点
在ngrinder中,通常使用单进程多线程就足够大部分测试了,所以:
- 我们最需要关注的就是
@Test
,这个是循环体; - 其次是
@Before
,这里设置多个循环体的共享变量; - 再其次是
@BeforeThread
和@AfterThread
,用于设置每个线程执行前后的行为。
四、具体代码结构
@RunWith(GrinderRunner) // 每个测试类都要加这个注解
class TestRunner {
@BeforeProcess // 在每个进程启动前执行
public static void beforeProcess() {
// 加载资源文件、初始化 GTest 等
}
@BeforeThread // 在每个线程执行前执行
public void beforeThread() {
// 登录、设置 cookie 之类
}
@Before // 在每个 @Test 注解的方法执行前执行
public void before() {
// 设置变量、多个 @Test 方法共用的逻辑等
}
@Test // 在测试结束前不断运行。各个 @Test 注解的方法异步执行。
public void foo() {
// ...
}
@Test
public void bar() {
// ...
}
@After // 在每个 @Test 注解的方法执行后执行
public void after() {
// 很少用到
}
@AfterThread
public void afterThread() {
// 登出之类
}
@AfterProcess // 在每个进程结束后执行
public static void afterProcess() {
// 关闭资源
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。