Junit4中怎样随心所欲的执行Test(一)
来源:互联网 发布:node sass error 4058 编辑:程序博客网 时间:2024/05/16 09:20
前言:使用junit4.4进行接口测试时,用来组织测试用例的测试类,我们称之为“TestCase”。TestCase中的每个测试用例用@Test来标记,在这里我们称测试用例为“Test”。在eclipse中,使用junit4.4来编写接口测试用例,可以单独运行一个Test,也可以批量执行指定TestCase中的所有Test。现因业务需要,我们需要在服务端升级到现网后,挑选一些基础用例来确认现网环境的正确性。因此我们只希望执行TestCase中指定的Test,而不是全部的Test,此时需要对junit进行扩展。
在junit4中,执行指定TestCase中的所有Test,只需要在eclipse中简单的写上以下几行代码,就ok啦。只需要将待执行的TestCase类名添加到SuiteClasses中(eg:蓝色部分),junit会自动为这些TestCase创建一个默认的TestSuite,再由junit中的TestRunner来运行这些TestSuite。默认的TestSuite中包含所有的Test,所以所有的Test都会被执行。
@RunWith(Suite.class)
@SuiteClasses( {
TestAppjumpReq.class,
TestCheckNameReq.class …... })
public class AllTestCases {
}
如果我们不想执行所有的Test,要么为每个TestCase提供一个自定义的TestSuite,要么对默认TestSuite中的Test进行过滤。前一种方法需要修改每个TestCase的代码,并有一定的侵入性,所以后一种方法更好。经过查看junit4.4的api,发现junit4提供了一个抽象类:Filter(过滤器),扩展这个类就可以过滤出默认TestSuite中应该执行的Test。实现方法如下:
1. 先写一个类继承Filter,通过用户告知的Test名称来过滤出对应的Test,代码如下:
public class BaseTestFilter extends Filter{
private String methodname;
public BaseTestFilter(String methodname){
this.methodname=methodname;
}
@Override
public String describe() {
return methodname+"should test.";
}
@Override
public boolean shouldRun(Description arg0) {
String name = arg0.getDisplayName().split("\\(")[0].trim();
if(name.equals((methodname.trim()))){
return true;
}
return false;
}
}
2. 再写一个类,来运行过滤后的TestSuite,代码如下:
public class BaseTestSuites {
public static Test suite() throws Exception {
TestSuite suite = new TestSuite("test for base testcase.");
JUnit4TestAdapter testAdapter;
//通过过滤器,添加基础测试到TestSuite中
for(int i=0;i<testClasses.length;i++){
testAdapter= new JUnit4TestAdapter(testClasses[i]);
testAdapter.filter(new BaseTestFilter(testNames[i]));
suite.addTest(testAdapter);
}
return suite;
}
public static void main(String[] args) throws Exception{
junit.textui.TestRunner.run(BaseTestSuites.suite());
}
//待执行的TestCase
private static Class[] testClasses = {
TestAppjumpReq.class,
TestCheckNameReq.class,
……
};
//与上述TestCase对应一一对应,待执行的Test方法名。
private static String[] testNames = {
"testAppjump_normal",
"testCheckName_normal",
……
};
}
- Junit4中怎样随心所欲的执行Test(一)
- Junit4中怎样随心所欲的执行Test(一)
- Junit4中怎样随心所欲的执行Test(一)
- Junit4中怎样随心所欲的执行Test
- Junit4中怎样随心所欲的执行Test(二)
- Junit4中Test Suite的用法
- junit4按顺序执行test方法
- JUNIT4如何按顺序执行test cases
- junit4按顺序执行test方法
- JUnit4中@Before、@After、@Test等注解的作用
- JUnit中@Test的执行顺序
- 奇怪的JUnit4 不能认识@Test么?
- Spring Test整合JUnit4的使用
- Junit4详解二:Junit4 Runner以及test case执行顺序和源代码理解
- Junit4详解二:Junit4 Runner以及test case执行顺序和源代码理解
- Spring3.1集成Quartz,让你的任务执行随心所欲
- maven中使用spring的test包结合junit4进行测试。
- JUnit4的执行的一般流程
- 山东中煤提供防爆计算机|防爆电脑|防爆键盘鼠标|防爆显示器防爆录像机
- java中数据的5种存储位置(堆与栈)
- hdu 1698 Just a Hook(线段树)
- leetcode 之 Subsets
- How to Manually Update Bash to Patch Shellshock Bug on Older Fedora-Based Linux Systems
- Junit4中怎样随心所欲的执行Test(一)
- php调用C代码的方法详解
- Junit TestSuite的使用
- Oracle Apex 实用笔记系列 2 - 文件上传管理
- 杭电2544 最短路 最短路径
- php中使用exec,system等函数调用系统命令
- Greenplum分布式数据库开发入门到精通
- cheat 的安装步骤 在这简单记录一下
- Android平台下的JNI开发