Автоматическое тестирование в Unreal Engine
Ретроспектива
Всем привет! Год назад я начал небольшой курс на YouTube по автоматизации Unreal Engine.
После этого случился вынужденный перерыв. Сейчас лекции возобновлены и уже разобраны следующие темы:
- Cборка движка из исходного кода
- Cборка проекта blueprint игры
- Cборка проекта C++ игры
- .clang-format, pre-commit. git hook
- Сборка Unreal Engine 5 (early access) из исходного кода
- Unreal version selector / unreal build tool (UBT)
- Unreal version selector bug fixes
- Сборка бинарной версии из исходников (Installed Build)
- Сборка dedicated/listen сервера, подключение клиентов
Тестирование
Со следующей недели начинаем блок по тестированию. Он получается достаточно объемный. Все материалы подготовлены. Запись лекций в процессе. Видео обзор топиков:
Темы, которые будут точно разобраны:
- Введение в тестирование. Теоретическая часть. Основные понятия.
- Знакомство с Unreal Testing Automation Frontend. Простейшие unit тесты: 1+1, тестирование собственных алгоритмов и чистых C++ классов без рефлексии движка.
- Тестирование классов UObject и компонентов.
- Разбор Test Driven Development (TDD) подхода на примере тестирования жизней персонажа. Тестирование классов AActor
...
TestEqual("Health is full", Character->GetHealth(), MaxHealth);
TestTrue("Character is alive", Character->IsAlive());
Character->TakeDamage(DamageAmount, FDamageEvent(), nullptr, nullptr);
TestEqual("Health was changed", Character->GetHealth(), MaxHealth - DamageAmount);
TestTrue("Character is alive", Character->IsAlive());
- Интеграционное тестирование. Симуляция ввода Input Component. Latent automation command
...
ADD_LATENT_AUTOMATION_COMMAND(FMoveForwardTillLocationLatentCommand(TestInputComponent, Character, Spot3->GetActorLocation(), -1.0f));
ADD_LATENT_AUTOMATION_COMMAND(FEngineWaitLatentCommand(1.0f));
ADD_LATENT_AUTOMATION_COMMAND(FJumpLatentCommand(TestInputComponent, 0.0f));
ADD_LATENT_AUTOMATION_COMMAND(FEngineWaitLatentCommand(3.0f));
ADD_LATENT_AUTOMATION_COMMAND(FExitGameCommand);
- Functional screenshot tests
- Публикация отчета по тестам. Test Report
- Метрики тестирования. Тестовое покрытие. OpenCppCoverage
- Создание работы в Jenkins для автоматического запуска тестов с публикацией отчетов
Wiki
В поддержку ко всем лекциям созданы вики с открытым доступом (обновляются с выходом новых роликов):
Résumer
Буду рад всех видеть на канале. Присоединяйтесь, кому интересны данные темы. Всегда открыт к обсуждению и обмену знаниями (=
Начать дискуссию