| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- #!/bin/bash
- # 灾害去除系统测试运行脚本
- #
- # 使用方法:
- # ./run_tests.sh [选项]
- #
- # 选项:
- # all 运行所有测试
- # pesticide 只运行除虫测试
- # weedicide 只运行除草测试
- # watering 只运行浇水测试
- # suite 运行完整测试套件
- # unit 运行单元测试
- # help 显示帮助信息
- # 颜色定义
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- BLUE='\033[0;34m'
- NC='\033[0m' # No Color
- # 显示头部信息
- show_header() {
- echo -e "${BLUE}========================================${NC}"
- echo -e "${BLUE} 灾害去除系统测试运行器${NC}"
- echo -e "${BLUE}========================================${NC}"
- echo -e "时间: $(date '+%Y-%m-%d %H:%M:%S')"
- echo -e "环境: ${UNITTEST_URL:-http://localhost:8000}"
- echo -e "${BLUE}========================================${NC}"
- echo
- }
- # 显示帮助信息
- show_help() {
- echo "使用方法:"
- echo "./run_tests.sh [选项]"
- echo
- echo "选项:"
- echo " all 运行所有测试"
- echo " pesticide 只运行除虫测试"
- echo " weedicide 只运行除草测试"
- echo " watering 只运行浇水测试"
- echo " suite 运行完整测试套件"
- echo " unit 运行单元测试"
- echo " help 显示帮助信息"
- echo
- echo "示例:"
- echo " ./run_tests.sh all"
- echo " ./run_tests.sh pesticide"
- echo " ./run_tests.sh unit"
- echo
- }
- # 检查环境
- check_environment() {
- echo -e "${YELLOW}检查测试环境...${NC}"
-
- # 检查PHP
- if ! command -v php &> /dev/null; then
- echo -e "${RED}错误: 未找到PHP${NC}"
- exit 1
- fi
-
- # 检查Laravel
- if [ ! -f "artisan" ]; then
- echo -e "${RED}错误: 未找到Laravel项目${NC}"
- exit 1
- fi
-
- # 检查测试URL
- if [ -z "$UNITTEST_URL" ]; then
- echo -e "${YELLOW}警告: 未设置 UNITTEST_URL 环境变量${NC}"
- export UNITTEST_URL="http://localhost:8000"
- fi
-
- echo -e "${GREEN}环境检查完成${NC}"
- echo
- }
- # 运行测试
- run_test() {
- local test_file=$1
- local test_name=$2
-
- echo -e "${BLUE}运行 ${test_name}...${NC}"
- echo "----------------------------------------"
-
- start_time=$(date +%s)
-
- # 运行测试
- php artisan test "$test_file" --verbose
- exit_code=$?
-
- end_time=$(date +%s)
- duration=$((end_time - start_time))
-
- echo "----------------------------------------"
- echo "测试耗时: ${duration}秒"
-
- if [ $exit_code -eq 0 ]; then
- echo -e "${GREEN}✅ ${test_name} 测试通过${NC}"
- else
- echo -e "${RED}❌ ${test_name} 测试失败${NC}"
- fi
- echo
-
- return $exit_code
- }
- # 运行所有E2E测试
- run_all_e2e_tests() {
- echo -e "${BLUE}运行所有E2E测试...${NC}"
- echo
-
- local failed_tests=0
-
- # 运行除虫测试
- run_test "app/Module/AppGame/Tests/Land/PesticideHandlerTest.php" "除虫测试"
- if [ $? -ne 0 ]; then
- ((failed_tests++))
- fi
-
- # 运行除草测试
- run_test "app/Module/AppGame/Tests/Land/WeedicideHandlerTest.php" "除草测试"
- if [ $? -ne 0 ]; then
- ((failed_tests++))
- fi
-
- # 运行浇水测试
- run_test "app/Module/AppGame/Tests/Land/WateringHandlerTest.php" "浇水测试"
- if [ $? -ne 0 ]; then
- ((failed_tests++))
- fi
-
- echo -e "${BLUE}========================================${NC}"
- if [ $failed_tests -eq 0 ]; then
- echo -e "${GREEN}🎉 所有E2E测试通过!${NC}"
- else
- echo -e "${RED}❌ ${failed_tests} 个测试失败${NC}"
- fi
- echo -e "${BLUE}========================================${NC}"
-
- return $failed_tests
- }
- # 运行单元测试
- run_unit_tests() {
- echo -e "${BLUE}运行单元测试...${NC}"
- echo
-
- local failed_tests=0
-
- # 运行验证测试
- run_test "tests/Unit/Farm/DisasterRemovalValidationTest.php" "验证测试"
- if [ $? -ne 0 ]; then
- ((failed_tests++))
- fi
-
- # 运行逻辑测试
- run_test "tests/Unit/Farm/DisasterRemovalLogicTest.php" "逻辑测试"
- if [ $? -ne 0 ]; then
- ((failed_tests++))
- fi
-
- echo -e "${BLUE}========================================${NC}"
- if [ $failed_tests -eq 0 ]; then
- echo -e "${GREEN}🎉 所有单元测试通过!${NC}"
- else
- echo -e "${RED}❌ ${failed_tests} 个测试失败${NC}"
- fi
- echo -e "${BLUE}========================================${NC}"
-
- return $failed_tests
- }
- # 主函数
- main() {
- show_header
-
- case "${1:-help}" in
- "all")
- check_environment
- run_all_e2e_tests
- ;;
- "pesticide")
- check_environment
- run_test "app/Module/AppGame/Tests/Land/PesticideHandlerTest.php" "除虫测试"
- ;;
- "weedicide")
- check_environment
- run_test "app/Module/AppGame/Tests/Land/WeedicideHandlerTest.php" "除草测试"
- ;;
- "watering")
- check_environment
- run_test "app/Module/AppGame/Tests/Land/WateringHandlerTest.php" "浇水测试"
- ;;
- "suite")
- check_environment
- run_test "app/Module/AppGame/Tests/Land/DisasterRemovalTestSuite.php" "测试套件"
- ;;
- "unit")
- check_environment
- run_unit_tests
- ;;
- "help"|*)
- show_help
- ;;
- esac
- }
- # 运行主函数
- main "$@"
|