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")