2012-01-27 8 views
14

Estoy implementando algunas pruebas de humo en nuestro sitio web.Dado cuando a continuación, las pruebas: ¿NECESITO un "cuándo"?

Estoy usando un formato Dado/Cuando/Luego para las pruebas de aceptación automatizadas/historias de usuario existentes. Pero ahora quiero hacer una prueba inicial de humo:

Given I'm on the homepage

Then I should see "Welcome To The Site"

Me estoy perdiendo algo? ¿Está "bien" no tener un ¿Cuándo?

herramientas utilizadas: MvC3, SpecFlow, nUnit, Watin

Respuesta

18

Es sintaxis completamente válido para omitir cualquiera de dado, o Cuando Luego -

(e incluso a mezclar en cualquier orden specflow no le importa.)

Sin embargo, con el propósito de facilitar la lectura, en lugar de omitir el cuadro Cuando menudo reformular lo dado, es decir

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

prefiero omitir la sección dada, debido a que el Cuando se supone que indicar cuál es la acción de la prueba .

Si el código para el enlace por pasos es el mismo y desea volver a utilizarlo, siempre puede vincular su método dado y mi cuando al mismo método.

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

En realidad, parece que Specflow ni siquiera se preocupa de nombrar un paso Dado, Cuando o Siempre, siempre que se vincule con el atributo Dado/cuando/entonces correcto. La elección de la palabra es sabor, y parece ejecutar los pasos en orden. – perfectionist

+0

Es como dice el perfeccionista; specflow simplemente ejecuta los pasos en el orden indicado en el archivo de características. No podría importarle menos qué atributo usa. –

+1

Doh - ¡No hay saltos en los comentarios! Yo recomendaría usar When-steps para marcar claramente la acción que está probando. Como en Arrange Act Assert. –

-3

No necesita un Cuándo. Me gusta el pensar en lo Dado/cuando/luego palabras clave como

Dada - Esta es una etapa de preparación, hacer todo lo que necesita para ser capaz de realizar la prueba Cuando - Esto debería ser una acción que su prueba verificará. A continuación, debería ser donde verifique su prueba en función de la acción realizada en los pasos Cuando.

Como anteriormente sugerimos, solo afectan el orden de ejecución.

+0

¿Realmente quiso decir "NO NECESITA un cuándo"? ¿Puedes explicar por qué piensas eso? El resto de tu respuesta parece sugerir un cuándo es importante. –

-1

Disculpas por la resurrección de rosca ...

me he ido probablemente con:

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

me gusta mantener al menos un Given, When y Then en cada Scenario - No hago olvide que también puede usar And y But (no es que sean particularmente relevantes para este escenario). Incluso puede hacer una lista de estilo de viñeta con *.

11

Creo que realmente te estás perdiendo el punto aquí. Usted SIEMPRE necesita un When. ¡Eso es lo que deberías probar! Lo que puede omitir es Givens

Lo que debería decir es;

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

Given When Then es realmente una manera más agradable de lo que representa una máquina de estados.

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) 

Lo que me gusta hacer es pensar en todas las cosas que deben estar presentes para permitir que el When suceda. En su caso, no parece haber ningún estado inicial. Pero considere si tenía alguna aplicación web. Debería tener un estado inicial antes de visitar la página de inicio (deberá asegurarse de que el usuario haya iniciado sesión);

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" 

Un escenario alternativo sería;

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 

Como alguien señaló correctamente, la mayoría de las herramientas de TDC en realidad no diferenciar entre Given When Then pero se debe! La naturaleza detallada de 'Given When Then' se ha elegido porque es más fácil para nosotros los humanos entender y ayudar a nuestros procesos de pensamiento. A una máquina no le importa lo que usted llama los pasos. En este caso, debe hacer todo lo posible para utilizar las palabras clave correctamente en todo momento.

0

diría:

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

que tienden a ver Teniendo en cuenta como el equivalente de condiciones previas tradicionales. Cuando es el equivalente de la acción de prueba. Y luego como el equivalente del resultado esperado.

Por lo tanto, si no hay condiciones previas, que dejaría fuera Dada y simplemente centrarse en la hora y luego:

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

Specflow le permitirá uso que se da o cuando, pero Visual Studio también permitirá usted para escribir una sola clase que es 1000 de líneas de largo. El hecho de que ambos sean posibles, no significa que ninguno de los dos sea "correcto".

Cuestiones relacionadas