gpt4 book ai didi

bash - 测试编译代码以返回预期输出/错误的最佳方法

转载 作者:行者123 更新时间:2023-11-28 20:47:44 25 4
gpt4 key购买 nike

您如何测试编译后的代码是返回预期输出还是按预期失败?

我已经在下面制定了一个工作示例,但它不容易扩展。每个额外的测试都需要额外的嵌套括号。当然我可以将它拆分成其他文件,但是你对如何改进它有什么建议吗?我还计划在 makefile 中使用 make test 节中的这个,所以我不希望其他人安装默认情况下未安装的东西,只是为了测试它。 stdout 也应该与 stderr 保持交错。

简化示例:

./testFoo || echo execution failed

./testBar && echo expected failure

(./testBaz && (./testBaz 2>&1 | cmp -s - foo.tst && ( ./testFoo && echo and so on
|| echo testFoo's execution failed )|| echo testBaz's does not match )
|| echo testBaz's execution failed

我当前的测试仪看起来像这样(一次测试):

\#!/bin/bash
compiler1 $1 && (compiler2 -E --make $(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/') && (./$(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/') || echo execution failed) || less $(echo $1 | sed 's/^\(.\)\(.*\)\..*$/\l\1\2/').err) || echo compile failed

最佳答案

我建议从这里开始寻找模式。例如,您可以使用文件名作为模式,然后创建一些额外的文件来编码预期的结果。

然后您可以使用一个简单的脚本来运行命令并验证结果(而不是一次又一次地重复测试代码)。

例如,一个内容为0的文件testFoo.exec意味着它必须成功(或者至少返回0)而testBar.exec 将包含 1

textBaz.out 将包含预期的输出。您不需要多次调用 testBaz;您可以在第一次调用时重定向输出,然后查看 $? 以查看调用是否成功。如果是,那么您可以直接验证输出(无需再次启动命令)。

关于bash - 测试编译代码以返回预期输出/错误的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1288620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com