121 lines
3.3 KiB
GDScript
121 lines
3.3 KiB
GDScript
extends Node
|
|
## 属性测试运行器
|
|
## 运行所有属性测试并生成报告
|
|
|
|
# 测试场景列表
|
|
var test_scenes = [
|
|
"res://tests/TestPropertyKeyboardInput.tscn",
|
|
"res://tests/TestPropertyServerSync.tscn",
|
|
"res://tests/TestPropertyOnlineCharacters.tscn",
|
|
"res://tests/TestPropertyOfflineCharacters.tscn",
|
|
"res://tests/TestPropertyErrorDisplay.tscn",
|
|
"res://tests/TestPropertyReconnect.tscn"
|
|
]
|
|
|
|
var current_test_index = 0
|
|
var test_results = []
|
|
|
|
func _ready():
|
|
print("\n" + "=".repeat(60))
|
|
print("属性测试套件")
|
|
print("=".repeat(60))
|
|
print("总共 ", test_scenes.size(), " 个属性测试")
|
|
print("=".repeat(60) + "\n")
|
|
|
|
run_next_test()
|
|
|
|
func run_next_test():
|
|
"""运行下一个测试"""
|
|
if current_test_index >= test_scenes.size():
|
|
# 所有测试完成
|
|
print_final_report()
|
|
get_tree().quit()
|
|
return
|
|
|
|
var test_scene_path = test_scenes[current_test_index]
|
|
print("\n" + "-".repeat(60))
|
|
print("运行测试 ", current_test_index + 1, "/", test_scenes.size())
|
|
print("场景: ", test_scene_path)
|
|
print("-".repeat(60))
|
|
|
|
# 加载并运行测试场景
|
|
var test_scene = load(test_scene_path)
|
|
if test_scene:
|
|
var test_instance = test_scene.instantiate()
|
|
add_child(test_instance)
|
|
|
|
# 等待测试完成(增加等待时间以确保测试完成)
|
|
await get_tree().create_timer(5.0).timeout
|
|
|
|
# 尝试从测试实例获取结果
|
|
var test_passed = true
|
|
var test_error = ""
|
|
|
|
if test_instance.has_method("get_test_results"):
|
|
var results = test_instance.get_test_results()
|
|
test_passed = results.get("failed", 0) == 0
|
|
if not test_passed:
|
|
test_error = "Failed: %d/%d iterations" % [results.get("failed", 0), results.get("passed", 0) + results.get("failed", 0)]
|
|
elif "test_results" in test_instance:
|
|
var results = test_instance.test_results
|
|
test_passed = results.get("failed", 0) == 0
|
|
if not test_passed:
|
|
test_error = "Failed: %d/%d iterations" % [results.get("failed", 0), results.get("passed", 0) + results.get("failed", 0)]
|
|
|
|
# 记录结果
|
|
test_results.append({
|
|
"scene": test_scene_path,
|
|
"completed": true,
|
|
"passed": test_passed,
|
|
"error": test_error
|
|
})
|
|
|
|
# 清理
|
|
test_instance.queue_free()
|
|
await get_tree().process_frame
|
|
else:
|
|
print("❌ 无法加载测试场景: ", test_scene_path)
|
|
test_results.append({
|
|
"scene": test_scene_path,
|
|
"completed": false,
|
|
"passed": false,
|
|
"error": "Failed to load scene"
|
|
})
|
|
|
|
current_test_index += 1
|
|
run_next_test()
|
|
|
|
func print_final_report():
|
|
"""打印最终测试报告"""
|
|
print("\n" + "=".repeat(60))
|
|
print("属性测试总结")
|
|
print("=".repeat(60))
|
|
|
|
var passed = 0
|
|
var failed = 0
|
|
|
|
for result in test_results:
|
|
if result.get("completed", false):
|
|
if result.get("passed", false):
|
|
passed += 1
|
|
print("✅ ", result["scene"])
|
|
else:
|
|
failed += 1
|
|
print("❌ ", result["scene"])
|
|
if result.has("error") and not result["error"].is_empty():
|
|
print(" ", result["error"])
|
|
else:
|
|
failed += 1
|
|
print("❌ ", result["scene"], " - ", result.get("error", "Unknown error"))
|
|
|
|
print("\n总计: ", test_results.size(), " 个测试")
|
|
print("通过: ", passed)
|
|
print("失败: ", failed)
|
|
|
|
if failed == 0:
|
|
print("\n🎉 所有属性测试通过!")
|
|
else:
|
|
print("\n⚠️ 有 ", failed, " 个测试失败")
|
|
|
|
print("=".repeat(60) + "\n")
|