将程序的输出结果与预期结果进行比较的测试工具代码
将程序的输出结果与预期结果进行比较的测试工具代码
程序使用说明
程序功能
1.加载测试用例的输入与预期结果
2.执行被测试程序
3.将执行结果与预期结果进行比较
输入参数
用例输入文件路径
用例预期结果文件路径
被测试程序类名
被测试程序方法名
输出
用例通过返回值为true,用例未通过返回值为false
其他说明
用例输入文件和用例输出文件可存放多个用例,每个用例各占一行。
每个输入都要有对应预期结果,每个预期结果有要有对应输入。(一一对应,个数务必相同)
目前 不支持 输入和预期结果为数组、链表、树、map的形式。
程序源代码
测试工具类
package tools;import java.io.*;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;/*** @author MorWin*/
public class TestUtil> {public boolean isTestPass(String inputFilePath, String expectedResultFilePath, String className, String methodName)throws IOException, NoSuchMethodException, ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException {//加载用例输入BufferedReader inputBufferedReader = loadUseCaseInput(inputFilePath);AnyType input;//加载用例预期输出BufferedReader expectedResultBufferedReader = loadUseCaseInput(expectedResultFilePath);AnyType expectedResult;String input_line="";while((input_line=inputBufferedReader.readLine())!=null) {input=(AnyType)input_line;expectedResult=(AnyType) expectedResultBufferedReader.readLine();//执行测试函数Class testedClass = Class.forName(className);Method m = testedClass.getMethod(methodName,Object.class);AnyType output = (AnyType) m.invoke(testedClass.newInstance(),input);//将执行结果与预期结果进行比较boolean isEqual = Compare(output, expectedResult);if (!isEqual) {return false;}}return true;}public static BufferedReader loadUseCaseInput(String inputPath) throws FileNotFoundException {FileReader inputFileReader=new FileReader(inputPath);BufferedReader inputBufferedReader=new BufferedReader(inputFileReader);return inputBufferedReader;}public static BufferedReader loadUseCaseOutput(String outputPath) throws FileNotFoundException {FileReader outputFileReader=new FileReader(outputPath);BufferedReader outputBufferedReader=new BufferedReader(outputFileReader);return outputBufferedReader;}public boolean Compare(AnyType output,AnyType expectedResult){return output.toString().equals(expectedResult.toString());}
}
被测程序示例
package tmp;
import tools.TestUtil;import java.io.IOException;
import java.lang.reflect.InvocationTargetException;/*** @author LXC*/
public class JustTest {// public static > AnyType test(AnyType i){
// return i;
// }public int test(AnyType i){return 2;}public static void main(String[] args) throws NoSuchMethodException, IOException, InstantiationException, IllegalAccessException, InvocationTargetException, ClassNotFoundException {String inputFilePath=JustTest.class.getClassLoader().getResource("a.txt").getPath();String expectedResultFilePath=JustTest.class.getClassLoader().getResource("b.txt").getPath();TestUtil tu= new TestUtil<>();boolean result=tu.isTestPass(inputFilePath,expectedResultFilePath,"tmp.JustTest","test");
// boolean result=true;if(result){System.out.println("测试通过");}else {System.out.println("测试未通过");}}
}
测试用例输入a.txt
1
2
3
测试用例预期结果b.txt
2
3
4
工程源代码可在我的gitee上下载
下载链接
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
