创建新工程

This commit is contained in:
moyin
2025-12-05 19:00:14 +08:00
commit ff4fa5fffd
227 changed files with 32804 additions and 0 deletions

120
tests/RunPropertyTests.gd Normal file
View File

@@ -0,0 +1,120 @@
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")