统一的安静输出?
Quiet output for unity?
我有格伦宁的书。在第 20 页,他有一个统一示例的输出。它显示没有通过测试,只是“...”对于每个通过的测试。
我下载了 unity 源代码并 运行 在我的目标处理器的模拟器中。我看到列出了每个测试用例 - 通过的和失败的。
我没有看到我可以在 unity.h 中定义的任何选项,这些选项只会打印出失败的测试用例和摘要。我有很多测试,我的标准输出 window 现在真的很乱。
我没有使用(在 auto 或 extras 目录中)的生成测试运行程序 ruby 脚本是否处理了一些魔法?或者有没有我缺少的基本选项。
这代表了我现在的输出结果
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
我在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(本来就有的,我又加了一个)
成功了 + 在每条消息之间放置一个空白 space 以使所有内容更具可读性。
我有格伦宁的书。在第 20 页,他有一个统一示例的输出。它显示没有通过测试,只是“...”对于每个通过的测试。
我下载了 unity 源代码并 运行 在我的目标处理器的模拟器中。我看到列出了每个测试用例 - 通过的和失败的。
我没有看到我可以在 unity.h 中定义的任何选项,这些选项只会打印出失败的测试用例和摘要。我有很多测试,我的标准输出 window 现在真的很乱。
我没有使用(在 auto 或 extras 目录中)的生成测试运行程序 ruby 脚本是否处理了一些魔法?或者有没有我缺少的基本选项。
这代表了我现在的输出结果
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
我在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(本来就有的,我又加了一个)
成功了 + 在每条消息之间放置一个空白 space 以使所有内容更具可读性。