Что такое светильники в программировании?


Я слышал этот термин много раз раньше (когда речь идет о программировании), но не мог найти никакого объяснения, что это значит. Есть хорошие статьи или объяснения? Я не нашел ничего достойного упоминания.

3 116

3 ответа:

Я думаю, что вы имеете в виду проверка креплений:

цель испытания прибора, чтобы гарантировать, что есть известная и фиксированная среда, в которой выполняются тесты, чтобы результаты были воспроизводимый. Некоторые люди называют это тестовым контекстом.

примеры приспособлений:

- Loading a database with a specific, known set of data
- Erasing a hard disk and installing a known clean operating system installation
- Copying a specific known set of files
- Preparation of input data and set-up/creation of fake or mock objects

(Источник: Википедия, см. ссылку выше)

вот практические примеры из документации 'Google Test' framework.

Я думаю, что PHP-модульные тесты очень хорошо объясняют это:

одной из самых трудоемких частей написания тестов является написание код для установки мира в известное состояние, а затем вернуть его в исходное состояние исходное состояние, когда тест завершен. Это известное состояние, называется приспособление испытания.

также документы Yii описали испытание приспособлений в хорошей форме:

автоматизированные тесты должны быть выполнены много раз. К обеспечить тестирование процесс повторяется, мы хотели бы запустить тесты в некоторых известных состояние называется крепеж. Например, чтобы проверить функцию создания сообщений в блоге приложения, каждый раз, когда мы запускаем тесты, таблицы хранение релевантных данных о сообщениях (например, таблица сообщений, комментарий таблица) должен быть восстановлен до некоторого фиксированного состояния.

вот простой пример тестирования светильников

<?php
use PHPUnit\Framework\TestCase;

class StackTest extends TestCase
{
    protected $stack;

    protected function setUp()
    {
        $this->stack = [];
    }

    protected function tearDown()
    {
        $this->stack = [];
    }

    public function testEmpty()
    {
        $this->assertTrue(empty($this->stack));
    }

    public function testPush()
    {
        array_push($this->stack, 'foo');
        $this->assertEquals('foo', $this->stack[count($this->stack)-1]);
        $this->assertFalse(empty($this->stack));
    }

    public function testPop()
    {
        array_push($this->stack, 'foo');
        $this->assertEquals('foo', array_pop($this->stack));
        $this->assertTrue(empty($this->stack));
    }
}
?>

этот модульный тест PHP имеет функции с именами setUp и tearDown что перед запуском теста вам настроить ваши данные и вы можете восстановить их в исходное состояние.

именно к этой теме У JUnit есть хорошо объясненный документ. здесь ссылка!

соответствующая часть статьи:

тесты должны выполняться на фоне известного набора объектов. Этот набор объектов называется тестовым приспособлением. Когда вы пишете тесты, вы часто обнаружите, что тратите больше времени на написание кода для настройки прибора, чем на фактическое тестирование значений.

в некоторой степени, вы можете сделать написание кода приспособления проще, уделяя пристальное внимание конструкторам, которые вы пишете. Тем не менее, гораздо большая экономия происходит от совместного использования кода прибора. Часто вы сможете использовать один и тот же прибор для нескольких различных тестов. Каждый случай пошлет немножко различные сообщения или параметры к приспособлению и проверит для различных результатов.

когда у вас есть общее приспособление, вот что вы делаете:

добавить поле для каждой части прибора Аннотировать метод с @орг.тесты JUnit.Перед и инициализировать переменные в этом методе Аннотировать метод с @орг.тесты JUnit.После освобождения всех постоянных ресурсов, выделенных в программе установки Например, чтобы написать несколько тестовых случаев, которые хотят работать с различными комбинациями 12 швейцарских франков, 14 швейцарских франков и 28 долларов США, сначала создайте приспособление:

public class MoneyTest {
    private Money f12CHF;
    private Money f14CHF;
    private Money f28USD;

    @Before public void setUp() {
    f12CHF= new Money(12, "CHF");
    f14CHF= new Money(14, "CHF");
    f28USD= new Money(28, "USD");
    }
}