Files
XCEngine/tests/RHI/unit/fixtures/RHITestFixture.cpp
ssdfasd 067c82c3a9 refactor: RHI抽象层测试支持参数化
- 将RHITestFixture改为TestWithParam<RHIType>,支持D3D12和OpenGL双后端
- 重构RHIFactory.cpp的include结构,修复OpenGL设备创建
- 在CMakeLists.txt中添加XCENGINE_SUPPORT_OPENGL宏定义
- 更新engine/CMakeLists.txt和tests/RHI/unit/CMakeLists.txt
- 将所有TEST_F改为TEST_P以支持参数化测试

测试结果: 138 tests (D3D12: 58 passed / OpenGL: 48 passed)
2026-03-23 19:17:32 +08:00

51 lines
1.3 KiB
C++

#include "RHITestFixture.h"
#include <cstdlib>
#include <iostream>
#include <windows.h>
namespace XCEngine {
namespace RHI {
INSTANTIATE_TEST_SUITE_P(D3D12, RHITestFixture, ::testing::Values(RHIType::D3D12));
INSTANTIATE_TEST_SUITE_P(OpenGL, RHITestFixture, ::testing::Values(RHIType::OpenGL));
void RHITestFixture::SetUpTestSuite() {
}
void RHITestFixture::TearDownTestSuite() {
}
void RHITestFixture::SetUp() {
mDevice = RHIFactory::CreateRHIDevice(GetParam());
ASSERT_NE(mDevice, nullptr);
WNDCLASSEXW wc = {};
wc.cbSize = sizeof(WNDCLASSEXW);
wc.lpfnWndProc = DefWindowProcW;
wc.hInstance = GetModuleHandle(nullptr);
wc.lpszClassName = L"RHIUnitTestClass";
RegisterClassExW(&wc);
HWND hwnd = CreateWindowExW(0, L"RHIUnitTestClass", L"RHIUnitTest", WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT, CW_USEDEFAULT, 800, 600, nullptr, nullptr, GetModuleHandle(nullptr), nullptr);
RHIDeviceDesc desc = {};
desc.enableDebugLayer = true;
desc.appName = L"RHIUnitTest";
desc.windowHandle = hwnd;
bool initResult = mDevice->Initialize(desc);
ASSERT_TRUE(initResult);
}
void RHITestFixture::TearDown() {
if (mDevice != nullptr) {
mDevice->Shutdown();
delete mDevice;
mDevice = nullptr;
}
}
} // namespace RHI
} // namespace XCEngine