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

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

Ответ 1

Я думаю, что вы имеете в виду тестовые приборы:

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

Примеры светильников:

- 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.

Ответ 2

Я думаю, что тесты на 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 unit test имеет функции с именами setUp и tearDown, которые перед запуском вашего теста вы настраиваете свои данные, и по завершении вы можете восстановить их в исходное состояние.

Ответ 3

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

Связанная часть статьи:

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

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

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

Добавьте поле для каждой части светильника Аннотировать метод с @org.junit. Перед этим и инициализировать переменные в этом методе Аннотировать метод с @org.junit. После освобождения любых постоянных ресурсов, которые вы выделили в setUp Например, чтобы написать несколько тестовых примеров, которые хотят работать с различными комбинациями из 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");
    }
}

Ответ 4

В Xamarin.UITest это объясняется следующим образом:

Как правило, каждый Xamarin.UITest записывается как метод, который называется в качестве теста. Класс, который содержит тест, известен как тест крепление. Тестовый прибор содержит либо один тест, либо логический группировка тестов и отвечает за любую настройку, чтобы сделать тест запустить и любую очистку, которая должна быть выполнена после завершения теста. Каждый тест должен соответствовать шаблону Arrange-Act-Assert:

  • Организовать - тест настроит условия и инициализирует все, чтобы можно было выполнить тест.
  • Действовать - тест будет взаимодействовать с приложением, вводить текст, нажимать кнопки и т.д.
  • Утверждение - тест проверяет результаты действий, выполненных на шаге Act, для определения правильности. Например, приложение может проверить, что конкретное сообщение об ошибке отображается.

Ссылка на оригинальную статью вышеупомянутой выдержки

А в коде Xamarin.UITest это выглядит следующим образом:

using System;
using System.IO;
using System.Linq;
using NUnit.Framework;
using Xamarin.UITest;
using Xamarin.UITest.Queries;

namespace xamarin_stembureau_poc_tests
{
    [TestFixture(Platform.Android)]
    [TestFixture(Platform.iOS)]
    public class TestLaunchScreen
    {
        IApp app;
        Platform platform;

        public Tests(Platform platform)
        {
            this.platform = platform;
        }

        [SetUp]
        public void BeforeEachTest()
        {
            app = AppInitializer.StartApp(platform);
        }

        [Test]
        public void AppLaunches()
        {
            app.Screenshot("First screen.");
        }

        [Test]
        public void LaunchScreenAnimationWorks()
        {
            app.Screenshot("Launch screen animation works.");
        }
    }
}

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

Ответ 5

Термин "фикстура" варьируется в зависимости от контекста, языка программирования или структуры.

1. Известное состояние, в отношении которого выполняется тест

Одним из наиболее трудоемких этапов написания тестов является написание код, чтобы установить мир в известном состоянии, а затем вернуть его исходное состояние, когда тест завершен. Это известное состояние называется крепление теста. Документация PHP-модуля

Тестовый прибор (также известный как тестовый контекст) - это набор предварительные условия или состояние, необходимое для запуска теста. Разработчик должен установить до заведомо хорошего состояния перед тестами и возврата к оригиналу состояние после испытаний. Википедия (xUnit)

2. Файл, содержащий примеры данных

Светильники - это модное слово для примеров данных. Светильники позволяют Заполните свою тестовую базу данных предопределенными данными перед вашими тестами запустить. Приспособления независимы от базы данных и написаны на YAML. Есть один файл на модель. RubyOnRails.org

3. Процесс, который устанавливает требуемое состояние. 

Устройство для тестирования программного обеспечения настраивает систему для процесса тестирования обеспечивая его всем необходимым кодом для его инициализации, тем самым удовлетворяющих любым предварительным условиям. Примером может быть загрузка базы данных с известными параметрами с сайта клиента перед запуском теста. Википедия