Skip to content

Commit 0feff5a

Browse files
committed
Polish "Writing tests"
1 parent cdb0ddc commit 0feff5a

File tree

5 files changed

+34
-15
lines changed

5 files changed

+34
-15
lines changed

.vitepress/theme/style.css

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
/* Reserve space for scrollbar to prevent layout shift */
2+
html {
3+
scrollbar-gutter: stable;
4+
}
5+
16
/* Override VitePress brand colors with dough/testo colors */
27
:root {
38
--vp-c-brand-1: #d4a574;

docs/getting-started.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,7 @@ final class CalculatorTest
9191

9292
### Key Points
9393

94-
- The `#[Test]` attribute is used to mark test methods.
95-
- Test classes don't need to inherit from a base class.
94+
- The `#[Test]` attribute marks test methods, and test classes don't need to inherit from a base class. See [Writing Tests](./writing-tests) for more options.
9695
- Use the `Assert` facade for assertions and `Expect` for expectations.
9796
- Testo provides multiple attributes to extend testing capabilities (retry policies, exception handling, and more).
9897

docs/writing-tests.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
# Writing Tests
22

3-
Testo doesn't care where a test lives, as long as it can be wrapped in a Closure. Currently supported:
3+
Testo doesn't care where a test lives, as long as it can be wrapped in a Closure.
44

5-
- **Classes** — tests are methods in regular classes, no base class inheritance required.
6-
- **Functions** — tests can be standalone functions.
7-
- **[Inline Tests](./inline-tests)** — for simple pure functions, tests as attributes directly on the method being tested.
5+
## Where to Write Tests
6+
7+
- **In methods** — in regular classes without `TestCase` inheritance.
8+
- **In functions** — in standalone functions outside classes.
9+
- **In attributes** — directly on the method being tested. See [Inline Tests](./inline-tests).
10+
11+
## Test Discovery
812

913
Depending on the configuration, Testo can discover tests in several ways:
1014

@@ -13,3 +17,8 @@ Depending on the configuration, Testo can discover tests in several ways:
1317
- **Custom strategies** — you can implement your own test discovery, for example by function-call (like PEST, but without execution) or by class parent, like PHPUnit.
1418

1519
All approaches can be combined in one project or even in one Test Suite.
20+
21+
## Less Code
22+
23+
- **Parameterization** — instead of copying a test for each data set, write one test and pass it different values via [data providers](./data-providers).
24+
- **Interceptor attributes** — extract repetitive boilerplate into reusable attributes.

ru/docs/getting-started.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,10 +90,9 @@ final class CalculatorTest
9090

9191
### Ключевые моменты
9292

93-
- Атрибут `#[Test]` используется для пометки тестовых методов.
94-
- Тестовые классы не нужно наследовать от базового класса.
93+
- Атрибут `#[Test]` помечает тестовые методы, при этом классам не нужно наследовать базовый класс. Подробнее в разделе [Пишем тесты](./writing-tests).
9594
- Используйте фасад `Assert` для утверждений и `Expect` для ожиданий.
96-
- Testo предоставляет множество атрибутов для расширения возможностей тестирования (политики повторов, обработка исключений и другое)
95+
- Testo предоставляет множество атрибутов для расширения возможностей тестирования (политики повторов, обработка исключений и другое).
9796

9897
## Запуск тестов
9998

ru/docs/writing-tests.md

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,24 @@
11
# Пишем тесты
22

3-
Для Testo без разницы, где находится тест, если его можно завернуть в Closure. Сейчас поддерживаются:
3+
Для Testo без разницы, где находится тест, если его можно завернуть в Closure.
44

5-
- **Классы** — тесты это методы обычных классов, наследование от базового класса не требуется.
6-
- **Функции** — тесты могут быть обычными функциями.
7-
- **[Встроенные тесты](./inline-tests)** — для простых чистых функций, тесты как атрибуты прямо на тестируемом методе.
5+
## Где писать тесты
86

9-
---
7+
- **В методах** — в обычных классах без наследования от `TestCase`.
8+
- **В функциях** — в обычных функциях вне классов.
9+
- **В атрибутах** — прямо на тестируемом методе. См. [Встроенные тесты](./inline-tests).
1010

11-
В зависимости от настроект, Testo может находить тесты несколькими способами:
11+
## Обнаружение тестов
12+
13+
В зависимости от настроек, Testo может находить тесты несколькими способами:
1214

1315
- **Явно**[атрибут #\[Test\]](./test-attribute) помечает метод, функцию или класс.
1416
- **По конвенциям**[соглашения об именовании](./naming-conventions), например методы `testSomething()` или классы `*Test`.
1517
- **Кастомные стратегии** — можно реализовать собственный способ поиска тестов, например по function-call (как в PEST, только без запуска) или по родителю класса, как в PHPUnit.
1618

1719
Все подходы можно комбинировать в одном проекте или даже в одном Test Suite.
20+
21+
## Меньше кода
22+
23+
- **Параметризация** — вместо копирования теста для каждого набора данных, напишите один тест и передайте ему разные значения через [провайдеры данных](./data-providers).
24+
- **Атрибуты-интерцепторы** — выносите повторяющийся boilerplate в переиспользуемые атрибуты.

0 commit comments

Comments
 (0)