Testing 用于测试输入文件和输出解决方案的脚本

Testing 用于测试输入文件和输出解决方案的脚本,testing,scripting,Testing,Scripting,我有一组*.in文件和一组带有匹配文件名的*.soln文件。我想以*.in文件作为输入运行我的程序,并将输出与*.soln文件中的输出进行比较。最好的办法是什么?我可以想出3个选择 用Java编写一些驱动程序,列出文件夹中的文件,运行程序,并进行比较。这将是艰难的 编写一个bash脚本来实现这一点。怎么做 编写一个python脚本来实现这一点 如果程序存在,我怀疑bash脚本是最好的选择。 如果您的soln文件命名正确,则类似于 对于base*.soln中的文件 做 myprogram>新建_u

我有一组*.in文件和一组带有匹配文件名的*.soln文件。我想以*.in文件作为输入运行我的程序,并将输出与*.soln文件中的输出进行比较。最好的办法是什么?我可以想出3个选择

  • 用Java编写一些驱动程序,列出文件夹中的文件,运行程序,并进行比较。这将是艰难的
  • 编写一个bash脚本来实现这一点。怎么做
  • 编写一个python脚本来实现这一点

  • 如果程序存在,我怀疑bash脚本是最好的选择。 如果您的soln文件命名正确,则类似于

    对于base*.soln中的文件 做 myprogram>新建_u$file diff$文件新文件 完成

    当然,您可以检查diff和 执行各种其他操作以创建测试报告

    在我看来这很简单


    Karl

    这主要是一个需要使用逻辑最少的文件系统的问题。对于这些问题,Bash并不是一个坏的选择。如果事实证明您想做一些比仅仅比较等式更复杂的事情,那么Python将成为一个更具吸引力的选择。对于这样的一次性脚本,Java似乎不是一个好的选择

    基本bash实现可能如下所示:

    cd dir_with_files
    
    program=your_program
    input_ext=".in"
    compare_to_ext=".soIn"
    
    for file in *$from_extension; do 
      diff <("$program" "$i") "${file:0:$((${#file}-3))}$compare_to_ext"
    done
    
    cd dir_与_文件
    程序=您的_程序
    input_ext=“.in”
    将_与_ext=“.soIn”进行比较
    对于扩展名为*的文件,$from_;做
    
    diff我会选择bash解决方案。另外,考虑到您正在做的是一个测试,我将始终保存
    myprogram
    的输出,以便在出现故障时,您始终可以将其与输出进行比较

    #!/bin/bash
    
    for infile in *.in; do
        basename=${infile%.*}
        myprogram $infile > $basename.output
        diff $basename.output $basename.soln
    done
    
    根据报告的要求添加检查或退出状态等