Понимание расхождений в выходных данных платформы модульного тестирования MicrosoftC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Понимание расхождений в выходных данных платформы модульного тестирования Microsoft

Сообщение Anonymous »

MS Visual Studio 17.9.5, C++, MS Unit Testing Framework
Когда я начал изучать MS UTF, я успешно написал несколько простых тестов для пары своих занятия. Решение строится и работает правильно. Тесты также проходят как положено. Однако у меня есть выходные данные, которые я не могу объяснить с помощью макросов UTF, TEST_MODULE_INITIALIZE() и TEST_MODULE_CLEANUP():
  • В этих макросах я вывожу текст с помощью Logger::WriteMessage(). Вывод обоих правильно отображается в окне вывода IDE (ну, в основном, но это уже другая проблема). Вывод из INITIALIZE также отображается в окне сводной информации о тесте обозревателя тестов, но под первым запуском тестового класса. Вывод последнего отображается только в окне «Вывод». Почему текстовый вывод не связан с TEST_METHOD, появляющимся в его выводе?
  • Я использую std::filesystem для определения и отображения current_path (), один раз в каждом из этих макросов. Текущий путь в INITIALIZE — это каталог проекта x64\Debug. Путь в CLEANUP — \Programs\Visual Studio 2022\Common7\IDE\. Почему каталоги разные?
Log — это мой тестируемый класс. fs = std::filesystem.
TEST_MODULE_INITIALIZE(ModuleInitialize)
{
Logger::WriteMessage("In Module Initialize\n");
const fs::path deleteLogPath{ fs::current_path() / "TestLog_MSFT.txt" };
if (fs::exists(deleteLogPath))
{
fs::remove(deleteLogPath);
Logger::WriteMessage("\tOld log file deleted in ModuleInitialize in preparation for test\n");
}
}

TEST_MODULE_CLEANUP(ModuleCleanup)
{
Logger::WriteMessage("In Module Cleanup");
const fs::path deleteLogPath{ fs::current_path() / "TestLog_MSFT.txt" };
if (fs::exists(deleteLogPath))
{
Logger::WriteMessage("\tLog file exists");
fs::remove(deleteLogPath);
Logger::WriteMessage("\tOld log file deleted in ModuleCleanup in preparation for next test invocation\n");
}
else
{
Logger::WriteMessage(format("\tOld log file does not exist at {}\n", deleteLogPath.string()).c_str());
}
}

TEST_CLASS(Log_Tests)
{
public:

TEST_METHOD(Log_Constructor_Parameter)
{
Logger::WriteMessage("In Create Log file Test");
fs::path logPath{ fs::current_path() / "TestLog_MSFT.txt" };

Log testLog(logPath, LogCode::INFO);

bool condition = fs::exists(logPath);
Assert::IsTrue(condition);
Logger::WriteMessage("\tPassed: Log file created successfully\t");
Logger::WriteMessage(format("\t{}\n", logPath.string()).c_str());
}
};

Вывод в окне «Вывод» > «Тест» (пути изменены):
In Module Initialize

Old log file deleted in ModuleInitialize in preparation for test

In Create Log file Test
Passed: Log file created successfully
D:\...\WxGenerator\x64\Debug\TestLog_MSFT.txt

In Module Cleanup
Old log file does not exist at D:\...\Common7\IDE\TestLog_MSFT.txt


Подробнее здесь: https://stackoverflow.com/questions/783 ... crepancies
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»