团结的安静输出?

时间:2015-06-11 20:26:34

标签: c unity-test-framework

我有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

1 个答案:

答案 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的开头(已经有一个,我添加了另一个)。

这就是诀窍+它在每条消息之间放置了一个空格,以使所有内容更具可读性。