Skip to content

Latest commit

 

History

History
147 lines (111 loc) · 4.43 KB

README_TESTS.md

File metadata and controls

147 lines (111 loc) · 4.43 KB

Тестирование проекта Apple Management System

Виды тестов

1. Codeception Unit Tests (рекомендуется)

Профессиональные unit-тесты с использованием Codeception Framework.

Расположение: common/tests/unit/models/AppleTest.php

Количество тестов: 16

Запуск всех тестов:

php vendor/bin/codecept run common

Запуск только тестов Apple:

php vendor/bin/codecept run common/tests/unit/models/AppleTest.php

Запуск с подробным выводом:

php vendor/bin/codecept run common/tests/unit/models/AppleTest.php --verbose

2. Standalone Test Script (для быстрой проверки)

Простой скрипт для быстрого тестирования без дополнительных зависимостей.

Расположение: test_apple_standalone.php

Запуск:

php test_apple_standalone.php

Список тестов

Тесты создания и состояний

  1. ✅ Создание яблока со случайными параметрами
  2. ✅ Размер нового яблока = 1
  3. ✅ Яблоко падает с дерева
  4. ✅ Яблоко на дереве не гниет

Тесты поедания

  1. ✅ Нельзя съесть яблоко на дереве (Exception)
  2. ✅ Можно съесть упавшее яблоко
  3. ✅ Размер уменьшается после поедания
  4. ✅ Полное поедание удаляет яблоко
  5. ✅ Постепенное поедание работает корректно

Тесты гниения

  1. ✅ Яблоко гниет через 5 часов
  2. ✅ Нельзя съесть гнилое яблоко (Exception)

Тесты валидации

  1. ✅ Нельзя съесть отрицательный процент (Exception)
  2. ✅ Нельзя съесть больше 100% (Exception)
  3. ✅ Нельзя съесть больше, чем осталось (Exception)

Дополнительные тесты

  1. ✅ Метки статуса возвращают правильные значения
  2. ✅ Пример из задания работает

Требования для тестов

Для Codeception:

  • PHP 7.4+
  • MySQL запущен и доступен
  • База данных создана (apple_db)
  • Миграции применены (php yii migrate)

Для Standalone:

  • PHP 7.4+
  • MySQL запущен
  • База данных создана

Настройка тестовой БД

Тестовая конфигурация находится в common/config/test-local.php

По умолчанию используется та же БД что и для разработки:

'db' => [
    'dsn' => 'mysql:host=localhost;dbname=apple_db',
],

Структура Codeception тестов

common/tests/
├── unit/
│   ├── models/
│   │   ├── AppleTest.php       ← Тесты модели Apple
│   │   └── LoginFormTest.php   ← Тесты формы входа
│   └── unit.suite.yml
├── _bootstrap.php
├── _data/
├── _output/
└── _support/

Примеры использования

Запуск всех unit-тестов:

php vendor/bin/codecept run unit

Запуск с отчетом покрытия:

php vendor/bin/codecept run unit --coverage

Запуск определенного теста:

php vendor/bin/codecept run unit common/tests/unit/models/AppleTest.php:testCreateRandomApple

Интеграция с CI/CD

Codeception тесты можно легко интегрировать в CI/CD pipeline:

# .github/workflows/tests.yml
test:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v2
    - name: Run tests
      run: php vendor/bin/codecept run

Отладка тестов

Для вывода дополнительной информации используйте:

php vendor/bin/codecept run unit --debug

Для вывода trace при ошибках:

php vendor/bin/codecept run unit --verbose --debug