Я - поблочное тестирование или интеграционное тестирование?

Попробуйте url-loader вместо file-loader:

{
  test: /\.png$/,
  use: 'url-loader'
},
9
задан Jon Tackabury 5 February 2009 в 16:27
поделиться

10 ответов

Если Ваш тестовый код соединяется с фактической базой данных и полагается на присутствие определенных данных (или отсутствие данных) для теста для передачи, это - интеграционный тест.

Я ususally предпочитаю тестировать что-то вроде этого путем насмешки компонента, что "метод доступа к данным" раньше получал фактические данные, является ли это соединением JDBC или прокси веб-сервиса или безотносительно. С насмешкой Вы говорите, "когда этот метод называют, возвратитесь, это" или "удостоверяется, что этот метод называют временами N", и затем Вы говорите классу под тестом использовать ложный компонент, а не реальный компонент. Это затем - "модульный тест", потому что Вы тестируете, как класс под тестом ведет себя в закрытой системе, где Вы объявили точно, как другие компоненты будут вести себя. Вы изолировали класс под тестом полностью и можете быть уверены, что Ваши результаты испытаний не будут энергозависимы и зависеть от состояния другого компонента.

Не уверенный, какой язык/технология Вы работаете с, но в мире Java, можно использовать JMock, EasyMock, и т.д. с этой целью.

15
ответ дан 4 December 2019 в 06:07
поделиться

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

7
ответ дан 4 December 2019 в 06:07
поделиться

Моя перспектива - то, что необходимо категоризировать тест на основе объема:

  • Модульный тест может быть выполнен автономный без любых внешних зависимостей (Файл IO, Сетевой IO, База данных, Внешние веб-сервисы).
  • Интеграционный тест может коснуться внешних систем.

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

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

Если внешнюю зависимость трудно дразнить (например, в DotNet, если Вы используете Насмешки Носорога, и внешние классы не имеют интерфейсов), затем создают тонкий класс обертки, который касается внешней системы. Затем дразните что обертка в модульных тестах. Вам не должна быть нужна база данных для запущения этого простого теста, так не требуйте того!

6
ответ дан 4 December 2019 в 06:07
поделиться

Я думаю, что важный вопрос, "Что я ДОЛЖЕН делать?"

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

Определенно модульный тест это!

[TestMethod]
public void ForgotMyPassword_SendsAnEmail_WhenValidUserIsPassed()
{
    var userRepository = MockRepository.GenerateStub<IUserRepository>();
    var notificationSender = MockRepository.GenerateStub<INotificationSender>();
    userRepository.Stub(x => x.GetUserByEmailAddressAndPassword("me@home.com", "secret")).Return(new User { Id = 5, Name = "Peter Morris" });

    new LoginController(userRepository, notificationSender).ResendPassword("me@home.com", "secret");

    notificationSender.AssertWasCalled(x => x.Send(null),
        options => options.Constraints(Text.StartsWith("Changed")));
}
2
ответ дан 4 December 2019 в 06:07
поделиться

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

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

1
ответ дан 4 December 2019 в 06:07
поделиться

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

0
ответ дан 4 December 2019 в 06:07
поделиться

Существует это (самостоятельно включенный), у кого есть строгие правила о том, что составляет модульный тест по сравнению с интеграционным тестом.

Тест не является модульным тестом если:

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

Который может быть одним способом сделать различие между тем, что модульный тест будет делать для Вас использование, дразнящее, например, а не любой из настоящих провайдеров ресурсов - файловая система, дб и т.д.

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

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

5
ответ дан 4 December 2019 в 06:07
поделиться

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

Я мог быть неправым, но это - то, что я думаю, если кто-то не приводит мне причину думать иначе.

0
ответ дан 4 December 2019 в 06:07
поделиться

это - модульный тест по определению: Вы тестируете единственный изолированный элемент кода определенного пути

0
ответ дан 4 December 2019 в 06:07
поделиться

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

Мне все равно.

Позвольте мне сформулировать это иначе: если бы я тестировал это, я бы увидел два способа сделать это - подделать базу данных, возвращающую нулевые строки, или фактически подключиться к базе данных, в которой нет данных для выбора. Я бы, вероятно, начал тестирование с того, что было проще всего сделать и что было проще всего реализовать - если бы это работало достаточно быстро, чтобы я мог получить значимую обратную связь. Тогда я бы подумал о другом, если мне нужно, чтобы он работал быстрее, или подумал, что есть какое-то преимущество.

Например, я бы, вероятно, начал подключаться к реальной тестовой БД на работе. Но если программное обеспечение должно работать с множеством разных баз данных - Oracle, PostGres, MySQL, SQL server и DB, или если бы тестовая БД на работе была недоступна для «обновлений», я бы, вероятно, написал тест «чистый / единичный», который существовал полностью изолированно.

В старости я предпочитаю использовать термин «разработчик» - чаще сталкиваться с «лицом к лицу» с «лицом к лицу» и проводить такое тестирование, которое имеет больше смысла. Я обнаружил, что часто использую такие термины, как «единица», а затем получение его определения приводит к тому, что люди делают такие вещи, как имитация файловой системы или имитация геттеров и сеттеров - деятельность, которую я считаю бесполезной.

Я твердо верю в это; Я представил это перед Google. [+1274] http://www.google.com/url?sa=t&source=web&oi=video_result&ct=res&cd=1&url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DPHtEkkKXSiY&ei=9-wKSobjEpKANvHT_MEB&rct=j&q = Heusser + GTAC + 2007 & usg = AFQjCNHOgFzsoVss50Qku1p011J4-UjhgQ

удачи! Сообщите нам, как это происходит!

10
ответ дан 4 December 2019 в 06:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: