将程序的输出结果与预期结果进行比较的测试工具代码

将程序的输出结果与预期结果进行比较的测试工具代码

程序使用说明

程序功能
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<AnyType extends Comparable<? super AnyType>> {
    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 extends Comparable<? super AnyType>> AnyType test(AnyType i){
//        return i;
//    }

    public <AnyType> 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<Integer> 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上下载

下载链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值