JUnit4---实践二:拓展之运行指定类的某些测试方法-自动生成该文件

本文介绍了在JUnit4中如何自动生成并运行指定的失败测试方法。当测试用例众多时,手动添加变得繁琐。文章提出了两种方案:一是通过结果日志生成测试类,二是使用JUnitCore的RunListener获取失败信息。详细阐述了如何根据日志文件生成失败测试方法的代码实现,并给出了相应示例。

一.背景

之前介绍过:

JUnit4---实践一:运行指定类的某些测试方法,当重跑用例较少时,可以手工添加指定的测试方法,但是测试方法较多且在多个不同的类时,手工添加就比较头大,有必要自动生成指定测试方法。

想着有2种方法:1.JUnitCore添加监听器RunListener,获得第一次执行的结果,根据结果聚合出指定的测试方法;2.通过扫结果日志,找到FAILED和ERROR,聚合出指定的测试方法。由于项目中是通过ant执行junit和junit-report获得第一次运行结果,自己添加监听器RunListener,不好使,已经尝试过,不成功。如果你是通过JUnitCore运行第一次,可以通过添加监听器RunListener获得FAILED和ERROR。下面介绍具体实现。

二.根据结果日志,自动生成测试类

1.在执行ant时,在build.xml中target:junit中添加<formatter type="brief" usefile="true" />,这样会在目标目录下,生成失败用例日志,类似TEST-com.weibo.cases.suite.HugangTestSuite.txt这种的*.txt文件,根据该文件找到失败的测试方法,

FindFailTest.java,如下:

package com.weibo.failmethods;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.junit.runner.JUnitCore;
import org.junit.runner.Request;
import org.junit.runner.Result;
/**
 * @author hugang
 * 根据日志 找出Failure 和 Error
 */
public class FindFailTest {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		// 文本每一行
		List<String> strList = new ArrayList();
		// 行号
		List<Integer> flags = new ArrayList();
		// 记录FAILED和ERROR
		Set<String> failSet = new TreeSet();
		// String regexStr =
		// "(Testcase:\\s\\w*([\\w]*.{3,}\\w*.):\\sFAILED)|(Testcase:\\s\\w*([\\w]*.{3,}\\w*.):\\sCaused\\san\\sERROR)";
		Pattern p = Pattern.compile("Testcase");
		Matcher m;
		int i = 0;

		try {
			Reader re = new FileReader(new File(System.getProperty("user.dir") + "/src/com/weibo/failmethods/" + 
					"TEST-com.weibo.cases.suite.HugangTestSuite.txt"));
			BufferedReader bre = new BufferedReader(re);
			while (bre.ready()) {
				String str = bre.readLine();
				strList.add(str);
				m = p.matcher(str);
				// 匹配后,记录匹配的行号
				if (m.find()) {
					flags.add(i);
					System.out.println("find " + i);
				}
				i++;
			}
			for (int k = 0; k < flags.size(); k++) {
				// 去除SKIPPED, 只存 FAILED和ER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值