ThirdPartyTestSuite.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. namespace Tests\Unit\ThirdParty;
  3. use PHPUnit\Framework\TestSuite;
  4. /**
  5. * ThirdParty模块测试套件
  6. *
  7. * 组织ThirdParty模块的所有测试用例
  8. * 提供统一的测试入口点
  9. */
  10. class ThirdPartyTestSuite
  11. {
  12. /**
  13. * 创建测试套件
  14. */
  15. public static function suite(): TestSuite
  16. {
  17. $suite = new TestSuite('ThirdParty模块测试套件');
  18. // 添加基础架构测试
  19. $suite->addTestSuite(BaseRequestTest::class);
  20. // 添加URS Request机制测试
  21. $suite->addTestSuite(UrsRequestTest::class);
  22. // 添加URS加密服务测试
  23. $suite->addTestSuite(UrsCryptoServiceTest::class);
  24. return $suite;
  25. }
  26. /**
  27. * 获取测试统计信息
  28. */
  29. public static function getTestStats(): array
  30. {
  31. $testClasses = [
  32. BaseRequestTest::class,
  33. UrsRequestTest::class,
  34. UrsCryptoServiceTest::class,
  35. ];
  36. $totalTests = 0;
  37. $testsByClass = [];
  38. foreach ($testClasses as $className) {
  39. $reflection = new \ReflectionClass($className);
  40. $methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
  41. $testMethods = array_filter($methods, function($method) {
  42. return strpos($method->getName(), 'test') === 0;
  43. });
  44. $count = count($testMethods);
  45. $totalTests += $count;
  46. $testsByClass[$className] = $count;
  47. }
  48. return [
  49. 'total_tests' => $totalTests,
  50. 'test_classes' => count($testClasses),
  51. 'tests_by_class' => $testsByClass,
  52. ];
  53. }
  54. /**
  55. * 打印测试统计信息
  56. */
  57. public static function printTestStats(): void
  58. {
  59. $stats = self::getTestStats();
  60. echo "\n=== ThirdParty模块测试统计 ===\n";
  61. echo "测试类数量: {$stats['test_classes']}\n";
  62. echo "测试方法总数: {$stats['total_tests']}\n";
  63. echo "\n各类测试分布:\n";
  64. foreach ($stats['tests_by_class'] as $className => $count) {
  65. $shortName = substr($className, strrpos($className, '\\') + 1);
  66. echo " {$shortName}: {$count}个测试\n";
  67. }
  68. echo "\n运行命令:\n";
  69. echo " vendor/bin/phpunit tests/Unit/ThirdParty/\n";
  70. echo " vendor/bin/phpunit tests/Unit/ThirdParty/UrsRequestTest.php\n";
  71. echo " vendor/bin/phpunit tests/Unit/ThirdParty/BaseRequestTest.php\n";
  72. echo " vendor/bin/phpunit tests/Unit/ThirdParty/UrsCryptoServiceTest.php\n";
  73. echo "\n";
  74. }
  75. }