2012-01-27 6 views
14

Я реализую некоторые тесты на дым на нашем сайте.Учитывая, когда при тестировании - мне нужно «когда»?

Я использую формат Given/When/Then для существующих автоматических приемочных испытаний/рассказов пользователей. Но теперь я хочу, чтобы сделать первоначальный тест дымообразования:

Given I'm on the homepage

Then I should see "Welcome To The Site"

я упускаю что-то? «О'кей» не иметь Когда?

Инструменты, используемые: MVC3, SpecFlow, NUnit, WatiN

ответ

18

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

(и даже смешивать их в любом порядке specflow не заботится.)

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

When I view the homepage 
Then I should see "Welcome To The Site" 

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

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

[Given(@"I'm on the homepage"] 
[When(@"I view the homepage"] 
public void NavigateToHomePage() 
{ 
    ... 
+1

На самом деле Specflow, по-видимому, даже не заботится о том, назовите ли вы данный шаг. Дано, когда или тогда, пока он привязывается к правым атрибутам Given/when/then. Выбор слова - это вкус, и, похоже, он просто выполняет шаги в порядке. – perfectionist

+0

Это как говорит перфекционист; specflow просто выполняет шаги в порядке, указанном в файле функций. Ему было все равно, о каком атрибуте вы используете. –

+1

Doh - нет новых строк в комментариях! Я бы рекомендовал использовать шаги «Когда-то», чтобы четко обозначить действие, которое вы тестируете. Как и в Arrange Act Assert. –

-3

Вам не нужно, когда. Мне нравится думать, что ключевые слова «Дата/Когда/Тогда» такие, как

Дано - Это шаг подготовки, сделайте все, что вам нужно для выполнения теста Когда - Это должно быть действие, которое проверит ваш тест. Затем - это должно быть место, где вы проверяете свой тест на основе действия, выполняемого в шагах «Когда».

Как и ранее, они влияют только на порядок выполнения.

+0

Вы действительно хотели сказать «Вам НЕ нужно когда»? Можете ли вы объяснить, почему вы так думаете? Остальная часть вашего ответа, по-видимому, подсказывает, когда важно. –

-1

Извиняюсь за воскресением нить ...

я бы, вероятно, пошел с:

Given there is a homepage 
When I view the homepage 
Then I should see "Welcome To The Site" 

Я хотел, чтобы по крайней мере один Given, When и Then в каждом Scenario - не забудьте, что вы также можете использовать And и But (не так, чтобы они были особенно важны для этого сценария). Вы даже можете просто создать список стилей в виде пули с *.

11

Я думаю, что вам действительно не хватает здесь. You ВСЕГДА необходимо When. Это то, что вы должны тестировать! Что вы можете оставить без внимания Givens

Что вы должны сказать, это;

When I visit the homepage 
Then I should see "Welcome To The Site" 

Given When Then действительно лучше способ представления государственной машины.

Given some initial state (in your case, non) 
When I perform some action (in your case, visiting the homepage) 
Then I have some final state (in your case, text displayed to a user) 

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

Given a user (user must be stored in the database) 
And the user is logged in (a logged in user must be in the session) 
When the user visits their homepage 
Then the user should see "Welcome To Your Homepage" 

Альтернативный сценарий будет;

Given no logged in user (some people would leave this Given out, but I add it for completness) 
When a user visits their homepage 
Then the user should be redirect to the login page 

Как кто-то правильно отметил, что большинство инструментов BDD фактически не различать Given When Then, но вы должны! Вербальная природа «Дано когда» была выбрана для того, чтобы нам легче понять и помочь нашим мысленным процессам. Машине все равно, что вы называете шагами. В этом случае вы должны приложить все усилия, чтобы правильно использовать ключевые слова в любое время.

0

Я бы сказал:

Given I have requested the home page 
When the home page loads 
Then I should see 'Welcome To The Site' 
0

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

Поэтому, если нет никаких предварительных условий, я хотел бы оставить вне Учитывая и просто сосредоточиться на Когда и потом:

When I'm on the homepage 
Then I should see "Welcome To The Site" 

Specflow позволит использовать Учитывая или когда, но Visual Studio также позволит вы должны написать один класс длиной 1000 строк. Просто потому, что оба возможны, это не значит, что это «правильно».

 Смежные вопросы

  • Нет связанных вопросов^_^