Огурец покончил с потребностью записать модульные тесты?

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

Main.ps1:

Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework

. $PSScriptRoot\Class.ps1

Class.ps1:

using namespace System.Management
using namespace System.Printing

Class PrinterObject
{
    [string]$Name
    [PrintServer]$Server
    [PrintQueue]$Queue
    [PrintTicket]$Ticket
    [ManagementObject]$Unit
    [bool]$IsDefault
}

Другая возможность была бы вставлять Class.ps1 в виде строки и используйте Invoke-Expression для его выполнения. Это задержит парсинг определения класса до времени, в котором доступны типы.

Add-Type -AssemblyName System.Printing
Add-Type -AssemblyName ReachFramework

Invoke-Expression @‘
    using namespace System.Management
    using namespace System.Printing

    Class PrinterObject
    {
        [string]$Name
        [PrintServer]$Server
        [PrintQueue]$Queue
        [PrintTicket]$Ticket
        [ManagementObject]$Unit
        [bool]$IsDefault
    }
’@
21
задан Steve Weet 19 September 2009 в 16:44
поделиться

5 ответов

Используйте Cucumber на высоком уровне, чтобы описать, что пользователь должен уметь видеть и делать. Используйте RSpec, Test: Unit, Shoulda и т. Д. Для написания модульных тестов. Прямо из коня :

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

...

Это когда вы начинаете писать код. Начните с написания пары строк кода, чтобы исправить ошибку, которую вы получили от Cucumber. Снова запустите огурец. Повторите и промойте, пока вы не будете довольны своей функцией. Когда вы перейдете к мельчайшим подробностям, опуститесь на один уровень абстракции и используйте RSpec или любую среду тестирования Ruby, чтобы написать некоторые спецификации / тесты для ваших классов.

Cucumber создан для тестирования всего вашего стека вместе, а не к ' единиц.

Вам нужно решить, где провести черту, но многие вещи, скрытые под капотом, вероятно, не будут покрыты тестом на огурец. Скажем, при регистрации я заполняю форму, указав свое имя, адрес электронной почты, номер телефона и т. Д. Модульный тест может проверить, что новый Пользователь также создаст новый Телефонный номер . С точки зрения пользователя, им все равно, что он создает новый TelephoneNumber , им важно, чтобы после регистрации у них была учетная запись и они могли видеть свой номер телефона.

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

Скажем, при регистрации я заполняю форму, указав свое имя, адрес электронной почты, номер телефона и т. Д. Модульный тест может проверить, что новый Пользователь также создаст новый Телефонный номер . С точки зрения пользователя, им все равно, что он создает новый TelephoneNumber , им важно, чтобы после регистрации у них была учетная запись и они могли видеть свой номер телефона.

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

Допустим, при регистрации я заполняю форму, указав свое имя, адрес электронной почты, номер телефона и т. Д. Модульный тест может проверить, что новый Пользователь также создаст новый Телефонный номер ]. С точки зрения пользователя, им все равно, что он создает новый TelephoneNumber , им важно, чтобы после регистрации у них была учетная запись и они могли видеть свой номер телефона.

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

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

У меня тоже нет большого опыта написания тестов на огурце (пока нет), но я надеюсь, что это немного помогает.

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

У меня тоже нет большого опыта написания тестов на огурцы (пока нет), но я надеюсь, что это немного помогает.

20
ответ дан 29 November 2019 в 20:59
поделиться

Я практиковал Огурец / RSpec последние полгода или около того, занимаясь БДД.

Прежде всего, в BDD нелегко попасть, вначале он будет чувствовать себя неестественно.

Но как только вы это сделаете, у вас не будет другого способа программировать.

Чтобы ответить на ваш вопрос. Для тестирования Javascript вам понадобится драйвер javascript, который может использовать Capybara, который используется в Cucumber.

capybara-webkit - это то, что сейчас используют все крутые дети.

Есть одна важная вещь, на которую стоит обратить внимание.

Интеграционные тесты медленные.

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

Моя тестовая установка, которой я чрезвычайно доволен:

Охрана для загрузки Spork Spork для более быстрых тестов Огурец для интеграционного тестирования capybara-webkit для тестирования JavaScript RSpec для модульного тестирования

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

2
ответ дан 29 November 2019 в 20:59
поделиться

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

6
ответ дан 29 November 2019 в 20:59
поделиться

Когда вы создаете приложение rails, вы по умолчанию получаете функциональные, интерактивные и модульные тесты. Огурец - это дополнительный тест, это также способ проверить опыт вашего пользователя. Когда они нажимают кнопку с надписью «go», они должны увидеть «успех», а не 404. Это гарантирует, что ничто из того, что вы делаете, случайно не испортит пользовательский опыт, и что ваше приложение сверху вниз работает для наиболее распространенных варианты использования, которые вы можете придумать. Другие тесты предназначены для того, чтобы убедиться, что все идет не так, как надо, и что вы проверили любую модель и метод с помощью микроскопа. Возможно, удастся полностью воспроизвести модульные тесты с помощью огурца, но это будет болезненно (и безумно медленно выполнять, особенно если вы используете селен). Лучшее время для написания тестов - это когда вы re разработки кода, и самый быстрый и простой способ сделать это - использовать встроенное тестирование рельсов и, возможно, некоторую дополнительную помощь, такую ​​как shoulda, rspec, также я большой поклонник factory-girl. Если вы еще не проверили это, на www.railscasts.com есть отличное вступление к огурцу, rspec и factory-girl, ... Я знаю, что на этот вопрос уже был дан ответ (это нет), но это мои два цента . Удачного кодирования !!

3
ответ дан 29 November 2019 в 20:59
поделиться

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

Функции Cucumber должны быть простыми и связаны с реальной пользовательской ценностью, которую имеет данная функция.

1
ответ дан 29 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

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