我有Grenning的书。在第20页,他有一个统一示例的输出。它没有显示通过测试,只是“......”每次通过测试。
我下载了统一源,并在我的目标处理器的模拟器中运行它。我看到列出了每个测试用例 - 传递和失败的测试用例。
我没有看到任何我可以在unity.h中定义的选项,它只打印出失败的测试用例和摘要。我有很多测试,而且我的stdout窗口现在非常混乱。
这是不是我使用的生成测试运行程序ruby脚本处理的一些魔法(在auto或extras目录中)?或者是否有一个我缺少的基本选项。
这代表了我的输出现在的样子
C:[path]\ut_main.c:80:test_fred_condition_foo:PASS
C:[path]\ut_main.c:85:test_fred_condition_bar:FAIL: Expected 1
C:[path]\ut_main.c:90:test_fred_condition_baz:PASS
C:[path]\ut_main.c:95:test_fred_condition_qux
-----------------------
4 Tests 1 Failures 0 Ignored
FAIL
我宁愿这样:
.
C:[path]\ut_main.c:85:test_fred_condition_bar:FAIL: Expected 1
. .
-----------------------
4 Tests 1 Failures 0 Ignored
FAIL
答案 0 :(得分:0)
我在unity.c中修改了UnityConcludeTest()
来解决这个问题。
就是这样:
void UnityConcludeTest(void)
{
if (Unity.CurrentTestIgnored)
{
Unity.TestIgnores++;
}
else if (!Unity.CurrentTestFailed)
{
UnityTestResultsBegin(Unity.TestFile, Unity.CurrentTestLineNumber);
UnityPrint(UnityStrPass);
}
else
{
Unity.TestFailures++;
}
Unity.CurrentTestFailed = 0;
Unity.CurrentTestIgnored = 0;
UNITY_PRINT_EOL;
}
我把它改成了
void UnityConcludeTest(void)
{
if (Unity.CurrentTestIgnored)
{
UNITY_PRINT_EOL;
Unity.TestIgnores++;
}
else if (!Unity.CurrentTestFailed)
{
#ifdef UNITY_QUIET
UnityPrint(".");
#else
UnityTestResultsBegin(Unity.TestFile, Unity.CurrentTestLineNumber);
UnityPrint(UnityStrPass);
UNITY_PRINT_EOL;
#endif
}
else
{
UNITY_PRINT_EOL;
Unity.TestFailures++;
}
Unity.CurrentTestFailed = 0;
Unity.CurrentTestIgnored = 0;
}
我还补充道
UNITY_PRINT_EOL;
在UnityTestResultsBegin
和UnityEnd的开头(已经有一个,我添加了另一个)。
这就是诀窍+它在每条消息之间放置了一个空格,以使所有内容更具可读性。