Giter Club home page Giter Club logo

Comments (17)

botelhojp avatar botelhojp commented on June 9, 2024

Este comportamento é esperado. Os arquivos dentro de uma execução são executados uma unica vez, os cenários podem sim ser executados quantas vezes quiser.

Neste seu exemplo será necessário chamar duas vezes o método run

eng.addStories("/stories/a1.story");
eng.addStories("/stories/a2.story");
eng.run();

eng.addStories("/stories/a1.story");
eng.run();

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

Então agora é bug:

Testes ===>

@test
public void testAllStories() throws Throwable {
eng.addStories("/stories/a1.story");
eng.addStories("/stories/a2.story");
eng.run();

    eng.addStories("/stories/a1.story");
    eng.run();      
}

Log ===>

16:01:42,558 INFO (main) [BehaveContext]: --------------------------------
16:01:42,558 INFO (main) [BehaveContext]: Demoiselle Behave Iniciado
16:01:42,558 INFO (main) [BehaveContext]: --------------------------------
16:01:42,612 INFO (main) [JBehaveParser]: Configurando o JBehave
16:01:42,623 INFO (main) [JBehaveParser]: Iniciando o parser JBehave
16:01:42,624 INFO (main) [JBehaveParser]: Executando estorias: [stories/a1.storyConverted, stories/a2.storyConverted]
Processing system properties {}
Using controls EmbedderControls[batch=false,skip=false,generateViewAfterStories=true,ignoreFailureInStories=true,ignoreFailureInView=true,verboseFailures=true,verboseFiltering=false,storyTimeoutInSecs=3600,threads=1]

(BeforeStories)
16:01:42,702 INFO (main) [BeforeAfterSteps]: >>Iniciando Aplicação<<
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Running story stories/a1.storyConverted
Funcionalidade: Acesso
(stories/a1.storyConverted)
Narrative:
In order to a tela inicial apareceça para mim
As a visitante
I want to acessar o Google
Scenario: Acesso ao Google
Dado que vou para a tela "Tela de Busca"
Então será exibido "Google"

Scenario: Pesquisa Simples
Dado que vou para a tela "Tela de Busca"
Quando informo "Demoiselle Behave" no campo "Campo de Busca"
Então será exibido "https://github.com/demoiselle/behave1/" (FAILED)
(java.lang.AssertionError: Texto não encontrado na tela. Texto: https://github.com/demoiselle/behave1/)

Failed to run story stories/a1.storyConverted
java.lang.AssertionError: Texto não encontrado na tela. Texto: https://github.com/demoiselle/behave1/
at org.junit.Assert.fail(Assert.java:91)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebScreen.waitText(WebScreen.java:68)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebScreen.waitText(WebScreen.java:52)
at br.gov.frameworkdemoiselle.behave.parser.jbehave.CommonSteps.textVisible(CommonSteps.java:214)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jbehave.core.steps.StepCreator$ParameterisedStep.perform(StepCreator.java:550)
at org.jbehave.core.embedder.StoryRunner$FineSoFar.run(StoryRunner.java:499)
at org.jbehave.core.embedder.StoryRunner.runStepsWhileKeepingState(StoryRunner.java:479)
at org.jbehave.core.embedder.StoryRunner.runScenarioSteps(StoryRunner.java:443)
at org.jbehave.core.embedder.StoryRunner.runCancellable(StoryRunner.java:305)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:219)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:180)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:229)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:201)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Running story stories/a2.storyConverted
Funcionalidade: Acesso
(stories/a2.storyConverted)
Narrative:
In order to a tela inicial apareceça para mim
As a visitante
I want to acessar o Google
Scenario: Acesso ao Google2
Dado que vou para a tela "Tela de Busca"
Então será exibido "Google"

Scenario: Pesquisa Simples2
Dado que vou para a tela "Tela de Busca"
Quando informo "Demoiselle Behave" no campo "Campo de Busca"
Então será exibido "https://github.com/demoiselle/behave/"

(AfterStories)
16:02:43,265 INFO (main) [BeforeAfterSteps]: >>Finalizando Aplicação<<

Generating reports view to '/home/01069360503/workspace-dbehave/teste/target/jbehave' using formats '[defaultstoryreport, console, html, stats]' and view properties '{defaultFormats=stats, decorateNonHtml=true, viewDirectory=view, decorated=ftl/jbehave-report-decorated.ftl, reports=ftl/jbehave-reports-with-totals.ftl, maps=ftl/jbehave-maps.ftl, navigator=ftl/jbehave-navigator.ftl, views=ftl/jbehave-views.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl}'
Reports view generated with 2 stories (of which 0 pending) containing 4 scenarios (of which 0 pending)
Failures in reports view: 1 scenarios failed
16:02:43,493 INFO (main) [JBehaveParser]: Finalizando parser JBehave
16:02:43,493 INFO (main) [BehaveContext]: --------------------------------
16:02:43,493 INFO (main) [BehaveContext]: Demoiselle Behave Finalizado
16:02:43,494 INFO (main) [BehaveContext]: --------------------------------


Reutilizei uma historia no final e ela não foi executada

from behave.

marvinsiq avatar marvinsiq commented on June 9, 2024

Tenta assim

ArrayList<String> stories = new ArrayList<String>();
stories.add("/stories/a1.story");
stories.add("/stories/a2.story");
eng.run(stories);
stories = new ArrayList<String>();
stories.add("/stories/a1.story");
eng.run(stories);

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

a1 storyconverted
a2 storyconverted

Bug denovo (executei até um "clean")

Testes ===>

@test
public void testAllStories() throws Throwable {
ArrayList stories = new ArrayList();
stories.add("/stories/a1.story");
stories.add("/stories/a2.story");
eng.run(stories);

    stories = new ArrayList<String>();
    stories.add("/stories/a1.story");
    eng.run(stories);       
}

Log ===>

16:39:43,184 INFO (main) [BehaveContext]: --------------------------------
16:39:43,184 INFO (main) [BehaveContext]: Demoiselle Behave Iniciado
16:39:43,184 INFO (main) [BehaveContext]: --------------------------------
16:39:43,238 INFO (main) [JBehaveParser]: Configurando o JBehave
16:39:43,250 INFO (main) [JBehaveParser]: Iniciando o parser JBehave
16:39:43,251 INFO (main) [JBehaveParser]: Executando estorias: [stories/a1.storyConverted, stories/a2.storyConverted]
Processing system properties {}
Using controls EmbedderControls[batch=false,skip=false,generateViewAfterStories=true,ignoreFailureInStories=true,ignoreFailureInView=true,verboseFailures=true,verboseFiltering=false,storyTimeoutInSecs=3600,threads=1]

(BeforeStories)
16:39:43,335 INFO (main) [BeforeAfterSteps]: >>Iniciando Aplicação<<
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Running story stories/a1.storyConverted
Funcionalidade: Acesso
(stories/a1.storyConverted)
Narrative:
In order to a tela inicial apareceça para mim
As a visitante
I want to acessar o Google
Scenario: Acesso ao Google
Dado que vou para a tela "Tela de Busca"
Então será exibido "Google"

Scenario: Pesquisa Simples
Dado que vou para a tela "Tela de Busca"
Quando informo "Demoiselle Behave" no campo "Campo de Busca"
Então será exibido "https://github.com/demoiselle/behave1/" (FAILED)
(java.lang.AssertionError: Texto não encontrado na tela. Texto: https://github.com/demoiselle/behave1/)

Failed to run story stories/a1.storyConverted
java.lang.AssertionError: Texto não encontrado na tela. Texto: https://github.com/demoiselle/behave1/
at org.junit.Assert.fail(Assert.java:91)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebScreen.waitText(WebScreen.java:68)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebScreen.waitText(WebScreen.java:52)
at br.gov.frameworkdemoiselle.behave.parser.jbehave.CommonSteps.textVisible(CommonSteps.java:214)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:616)
at org.jbehave.core.steps.StepCreator$ParameterisedStep.perform(StepCreator.java:550)
at org.jbehave.core.embedder.StoryRunner$FineSoFar.run(StoryRunner.java:499)
at org.jbehave.core.embedder.StoryRunner.runStepsWhileKeepingState(StoryRunner.java:479)
at org.jbehave.core.embedder.StoryRunner.runScenarioSteps(StoryRunner.java:443)
at org.jbehave.core.embedder.StoryRunner.runCancellable(StoryRunner.java:305)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:219)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:180)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:229)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:201)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
Running story stories/a2.storyConverted
Funcionalidade: Acesso
(stories/a2.storyConverted)
Narrative:
In order to a tela inicial apareceça para mim
As a visitante
I want to acessar o Google
Scenario: Acesso ao Google2
Dado que vou para a tela "Tela de Busca"
Então será exibido "Google"

Scenario: Pesquisa Simples2
Dado que vou para a tela "Tela de Busca"
Quando informo "Demoiselle Behave" no campo "Campo de Busca"
Então será exibido "https://github.com/demoiselle/behave/"

(AfterStories)
16:40:49,197 INFO (main) [BeforeAfterSteps]: >>Finalizando Aplicação<<

Generating reports view to '/home/01069360503/workspace-dbehave/teste/target/jbehave' using formats '[defaultstoryreport, console, html, stats]' and view properties '{defaultFormats=stats, decorateNonHtml=true, viewDirectory=view, decorated=ftl/jbehave-report-decorated.ftl, reports=ftl/jbehave-reports-with-totals.ftl, maps=ftl/jbehave-maps.ftl, navigator=ftl/jbehave-navigator.ftl, views=ftl/jbehave-views.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl}'
Reports view generated with 2 stories (of which 0 pending) containing 4 scenarios (of which 0 pending)
Failures in reports view: 1 scenarios failed
16:40:49,424 INFO (main) [JBehaveParser]: Finalizando parser JBehave
16:40:49,424 INFO (main) [BehaveContext]: --------------------------------
16:40:49,424 INFO (main) [BehaveContext]: Demoiselle Behave Finalizado
16:40:49,425 INFO (main) [BehaveContext]: --------------------------------


Reutilizei uma historia no final e ela não foi executada


Salvar as historias anexadas com um novo formato ".txt"

a1 story
a2 story

from behave.

marvinsiq avatar marvinsiq commented on June 9, 2024

Eu não entendi por que você quer executar a mesma história duas vezes. O que tem no a1.story e o que tem no a2.story?

from behave.

botelhojp avatar botelhojp commented on June 9, 2024

De fato não é um cenário típico. Rogério, com você levantou a bola, tente depurar o código e propor uma alternativa.

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

Concordo. De fato não é um cenário típico. Estava tentando lembrar qual a regra para execução e me deparei com este exemplo. Queria ver se diferenciava alguma coisa do caso de usar jbehave puro. Vanderson, vou ver aqui uma alternativa.

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

Marcus, da maneira que o Demoiselle Behave esta projetado, não posso rodar uma "story" duas vezes, entendeu?

Pense assim:
a1.story => produz algo que vai ser consumido, ou seja, deixa o banco de dados da aplicação em um certo estado
a2.story => consome algo, ou seja, modifica o estado da aplicação

E teria um a3.story => verifica se algo foi produzido ou etc...

Ai eu chamaria novamente o a1.story.

Entendeu? (tem alternativas com reuso de cenário não de historia)

Seria algo do tipo depois do a1.story teria que rodar o a2.story e o a3.story em paralelo, a solução simples era repetir a execução do a1.story depois do a2.story, antes de rodar o a3.story.

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

Outra coisa como você acha que vai sair no relatório?

from behave.

botelhojp avatar botelhojp commented on June 9, 2024

corrigido: c5721dc

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

Testes (Demoiselle Behave )===>

1.2.1-SNAPSHOT

@Test
public void testAllStories() throws Throwable {
    ArrayList<String> stories = new ArrayList<String>();
    stories.add("/a1.story");
    stories.add("/a2.story");
    stories.add("/a1.story");
    stories.add("/a2.story");
    eng.run(stories);
}

17:25:33,759 INFO (main) [BehaveContext]: --------------------------------
17:25:33,759 INFO (main) [BehaveContext]: Demoiselle Behave Iniciado
17:25:33,759 INFO (main) [BehaveContext]: --------------------------------
17:25:33,811 INFO (main) [JBehaveParser]: Configurando o JBehave
17:25:33,822 INFO (main) [JBehaveParser]: Iniciando o parser JBehave
17:25:33,822 INFO (main) [JBehaveParser]: Executando estorias: [a1.storyConverted, a2.storyConverted]
Processing system properties {}
Using controls EmbedderControls[batch=false,skip=false,generateViewAfterStories=true,ignoreFailureInStories=true,ignoreFailureInView=true,verboseFailures=true,verboseFiltering=false,storyTimeoutInSecs=3600,threads=1]

(BeforeStories)
17:25:33,901 INFO (main) [BeforeAfterSteps]: >>Iniciando Aplicação<<
log4j:WARN No appenders could be found for logger (org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

Running story a1.storyConverted
Funcionalidade: Acesso
(a1.storyConverted)
Narrative:
In order to a tela inicial apareceça para mim
As a visitante
I want to acessar o Google
Scenario: Acesso ao Google - a1
Dado que vou para a tela "Tela de Busca"
Então será exibido "Google"

Scenario: Pesquisa Simples - a1
Dado que vou para a tela "Tela de Busca"
Quando informo "Demoiselle Behave" no campo "Campo de Busca"
Então será exibido "https://github.com/demoiselle/behave/"

Running story a2.storyConverted
Funcionalidade: Acesso
(a2.storyConverted)
Narrative:
In order to a tela inicial apareceça para mim
As a visitante
I want to acessar o Google
Scenario:

Scenario: Pesquisa Simples2 - a2
Dado que vou para a tela "Tela de Busca"
Quando informo "Demoiselle Behave" no campo "Campo de Busca"
Então será exibido "https://github.com/demoiselle/behave/"

(AfterStories)
17:25:58,705 INFO (main) [BeforeAfterSteps]: >>Finalizando Aplicação<<

Generating reports view to '/home/01069360503/workspace-dbehave/teste/target/jbehave' using formats '[defaultstoryreport, console, html, stats]' and view properties '{defaultFormats=stats, decorateNonHtml=true, viewDirectory=view, decorated=ftl/jbehave-report-decorated.ftl, reports=ftl/jbehave-reports-with-totals.ftl, maps=ftl/jbehave-maps.ftl, navigator=ftl/jbehave-navigator.ftl, views=ftl/jbehave-views.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl}'
Reports view generated with 2 stories (of which 1 pending) containing 4 scenarios (of which 1 pending)
17:25:58,930 INFO (main) [JBehaveParser]: Finalizando parser JBehave
17:25:58,931 INFO (main) [BehaveContext]: --------------------------------
17:25:58,931 INFO (main) [BehaveContext]: Demoiselle Behave Finalizado
17:25:58,931 INFO (main) [BehaveContext]: --------------------------------

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

Testes (jBehave)===>
4.0-beta-3

@Override
protected List<String> storyPaths() {
    return Arrays.asList("a1.story", "a2.story", "a1.story", "a2.story");      
}

Processing system properties {}
Using controls EmbedderControls[batch=false,skip=false,generateViewAfterStories=true,ignoreFailureInStories=true,ignoreFailureInView=true,verboseFailures=false,verboseFiltering=false,storyTimeoutInSecs=60,threads=1]

(BeforeStories)

Running story a1.story

(a1.story)
Scenario: A1
@given ->A1.1
Given Step A1.1
@when ->A1.2
When Step A1.2
@when ->A1.3
And Step A1.3
@then ->A1.4
Then Step A1.4

Running story a2.story

(a2.story)
Scenario: A2
@given ->A2.1
Given Step A2.1
@when ->A2.2
When Step A2.2
@when ->A2.3
And Step A2.3
@then ->A2.4
Then Step A2.4

Running story a1.story

(a1.story)
Scenario: A1
@given ->A1.1
Given Step A1.1
@when ->A1.2
When Step A1.2
@when ->A1.3
And Step A1.3
@then ->A1.4
Then Step A1.4

Running story a2.story

(a2.story)
Scenario: A2
@given ->A2.1
Given Step A2.1
@when ->A2.2
When Step A2.2
@when ->A2.3
And Step A2.3
@then ->A2.4
Then Step A2.4

(AfterStories)

Generating reports view to '/home/01069360503/workspace-dbehave/testes/target/jbehave' using formats '[stats, console, txt, html, xml]' and view properties '{defaultFormats=stats, decorateNonHtml=true, viewDirectory=view, decorated=ftl/jbehave-report-decorated.ftl, reports=ftl/jbehave-reports-with-totals.ftl, maps=ftl/jbehave-maps.ftl, navigator=ftl/jbehave-navigator.ftl, views=ftl/jbehave-views.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl}'
Reports view generated with 2 stories (of which 0 pending) containing 2 scenarios (of which 0 pending)

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

No Demoiselle Behave (1.2.1-SNAPSHOT)

As histórias não são executadas duas vezes, isto é, são convertidas corretamente em duas historias, mas não são executadas duas vezes, não permitindo o reuso de historias:

"Executando estorias: [a1.storyConverted, a2.storyConverted]"
...
Log acima

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

No jbehave (4.0-beta-3)

As histórias são executadas duas vezes, isto é, permitem o reuso de historias:
...
Log acima

from behave.

botelhojp avatar botelhojp commented on June 9, 2024

O Julian acabou de fazer um commit que corrige o problema. atualiza e testa.

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

Funcionou assim:

@test
public void testAllStories() throws Throwable {
ArrayList stories = new ArrayList();
stories.add("/a1.story");
stories.add("/a2.story");
eng.run(stories);

    stories = new ArrayList<String>();
    stories.add("/a1.story");
    stories.add("/a2.story");
    eng.run(stories);

Assim não funciona:

@test
public void testAllStories() throws Throwable {
ArrayList stories = new ArrayList();
stories.add("/a1.story");
stories.add("/a2.story");
stories.add("/a1.story");
stories.add("/a2.story");
eng.run(stories);
}
}

from behave.

rogernobre avatar rogernobre commented on June 9, 2024

paramimerro
O que fica para ver no futuro "distante" (eu acho) é o relatório de execução. Nem o jbehave apresenta o relatório corretamente. Não seria duas execuções?????

from behave.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.