Тихий выход на единство?
У меня есть книга Греннинга. На странице 20 он имеет выход из примера единства. Это не показывает прохождение тестов, просто ". . ." для каждого прохождения теста.
Я скачал источник для Unity и запускаю его в симуляторе для моего целевого процессора. Я вижу все тестовые примеры в списке - прохождение и провал.
Я не вижу ни одного параметра, который я могу определить в файле 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 ответ
Я модифицировал UnityConcludeTest()
in unity.c to solve this problem.
Это было так:
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;
}
I also added
UNITY_PRINT_EOL; в начале UnityTestResultsBegin
and UnityEnd (there was already one, I added another).
That did the trick + it put a blank space between each message to make everything more readable.