1

我正在使用 IAR EWARM 的 cspybat 使用 Unity 为我的嵌入式代码运行一些单元测试。我希望我的构建服务器有一种简单的方法来确定单元测试是通过还是失败。如果我的单元测试失败,CSPY 有没有办法返回非零错误代码?我尝试更改 main() 中的返回值而没有更改。我可以调用一个函数来强制返回错误吗?

我的 cspybat 批处理文件如下所示:

"C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.4\common\bin\cspybat" -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.general.xcl" --backend -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.driver.xcl" 
4

2 回答 2

2

很不幸的是,不行。

我通过将“exit”替换为打印特定模式的函数以及退出代码来解决了这个问题。然后我将调用包装cspybat到一个脚本中,该脚本 1)去除额外输出的输出,2)使用所需的退出代码退出。

于 2016-10-04T09:21:08.167 回答
0

现在是 2020 年末,他们仍然没有提供这样做的机制。

我们通过包含一个包含内容的宏文件来解决它:

execUserExit()
{
__message "program exited with __exit_value = ", __exit_value:%d ;
}

并在代码中有我们自己的退出变量:

extern "C" int __exit_value=0xff;

我们在调用之前设置的exit()(尽管您可以编写自己的版本exit()

这使得调试器总是打印一些东西,即使程序在启动时崩溃。

然后我们用一个python包装器解析:

pattern =  "__exit_value =\s([\-|0-9|a-f|A-F|x]*)"
retvalue = int(re.findall(pattern,process.stdout)[0])
于 2020-12-04T18:23:39.073 回答