66import io .qameta .allure .Issue ;
77import io .qameta .allure .jbehave .samples .BrokenStorySteps ;
88import io .qameta .allure .jbehave .samples .SimpleStorySteps ;
9- import io .qameta .allure .model .ExecutableItem ;
109import io .qameta .allure .model .Parameter ;
1110import io .qameta .allure .model .Stage ;
1211import io .qameta .allure .model .Status ;
3130import java .io .File ;
3231import java .nio .file .Path ;
3332import java .time .Instant ;
33+ import java .util .Arrays ;
3434import java .util .List ;
3535
36- import static java .util .Collections .singletonList ;
3736import static org .assertj .core .api .Assertions .assertThat ;
3837import static org .assertj .core .api .Assertions .tuple ;
3938
@@ -52,7 +51,7 @@ public AllureJbehaveTest(@TempDirectory.TempDir final Path temp) {
5251
5352 @ Test
5453 void shouldSetName () {
55- final AllureResults results = runStory ("stories/simple.story" );
54+ final AllureResults results = runStories ("stories/simple.story" );
5655
5756 assertThat (results .getTestResults ())
5857 .extracting (TestResult ::getName )
@@ -63,7 +62,7 @@ void shouldSetName() {
6362 @ SuppressWarnings ("unchecked" )
6463 @ Test
6564 void shouldAddNotPerformedSteps () {
66- final AllureResults results = runStory ("stories/long.story" );
65+ final AllureResults results = runStories ("stories/long.story" );
6766
6867 assertThat (results .getTestResults ())
6968 .flatExtracting (TestResult ::getSteps )
@@ -87,7 +86,7 @@ void shouldAddNotPerformedSteps() {
8786
8887 @ Test
8988 void shouldSetStatus () {
90- final AllureResults results = runStory ("stories/simple.story" );
89+ final AllureResults results = runStories ("stories/simple.story" );
9190
9291 assertThat (results .getTestResults ())
9392 .extracting (TestResult ::getStatus )
@@ -97,7 +96,7 @@ void shouldSetStatus() {
9796
9897 @ Test
9998 void shouldSetFailedStatus () {
100- final AllureResults results = runStory ("stories/failed.story" );
99+ final AllureResults results = runStories ("stories/failed.story" );
101100
102101 final List <TestResult > testResults = results .getTestResults ();
103102 assertThat (testResults )
@@ -107,7 +106,7 @@ void shouldSetFailedStatus() {
107106
108107 @ Test
109108 void shouldSetStatusDetails () {
110- final AllureResults results = runStory ("stories/failed.story" );
109+ final AllureResults results = runStories ("stories/failed.story" );
111110
112111 assertThat (results .getTestResults ())
113112 .extracting (TestResult ::getStatusDetails )
@@ -117,7 +116,7 @@ void shouldSetStatusDetails() {
117116
118117 @ Test
119118 void shouldSetBrokenStatus () {
120- final AllureResults results = runStory ("stories/broken.story" );
119+ final AllureResults results = runStories ("stories/broken.story" );
121120
122121 assertThat (results .getTestResults ())
123122 .extracting (TestResult ::getStatus )
@@ -126,7 +125,7 @@ void shouldSetBrokenStatus() {
126125
127126 @ Test
128127 void shouldSetStage () {
129- final AllureResults results = runStory ("stories/simple.story" );
128+ final AllureResults results = runStories ("stories/simple.story" );
130129
131130 assertThat (results .getTestResults ())
132131 .extracting (TestResult ::getStage )
@@ -136,7 +135,7 @@ void shouldSetStage() {
136135 @ Test
137136 void shouldSetStart () {
138137 final long before = Instant .now ().toEpochMilli ();
139- final AllureResults results = runStory ("stories/simple.story" );
138+ final AllureResults results = runStories ("stories/simple.story" );
140139 final long after = Instant .now ().toEpochMilli ();
141140
142141 assertThat (results .getTestResults ())
@@ -147,7 +146,7 @@ void shouldSetStart() {
147146 @ Test
148147 void shouldSetStop () {
149148 final long before = Instant .now ().toEpochMilli ();
150- final AllureResults results = runStory ("stories/simple.story" );
149+ final AllureResults results = runStories ("stories/simple.story" );
151150 final long after = Instant .now ().toEpochMilli ();
152151
153152 assertThat (results .getTestResults ())
@@ -157,7 +156,7 @@ void shouldSetStop() {
157156
158157 @ Test
159158 void shouldSetFullName () {
160- final AllureResults results = runStory ("stories/simple.story" );
159+ final AllureResults results = runStories ("stories/simple.story" );
161160
162161 assertThat (results .getTestResults ())
163162 .extracting (TestResult ::getFullName )
@@ -166,7 +165,7 @@ void shouldSetFullName() {
166165
167166 @ Test
168167 void shouldSetDescription () {
169- final AllureResults results = runStory ("stories/description.story" );
168+ final AllureResults results = runStories ("stories/description.story" );
170169
171170 final String expected = "This is description for current story.\n "
172171 + "It should appear on each scenario in report" ;
@@ -182,7 +181,7 @@ void shouldSetDescription() {
182181 @ Issue ("238" )
183182 @ Test
184183 void shouldNotFailOnComments () {
185- final AllureResults results = runStory ("stories/comment.story" );
184+ final AllureResults results = runStories ("stories/comment.story" );
186185
187186 assertThat (results .getTestResults ())
188187 .extracting (TestResult ::getName , TestResult ::getStatus )
@@ -194,7 +193,7 @@ void shouldNotFailOnComments() {
194193
195194 @ Test
196195 void shouldProcessNotImplementedScenario () {
197- final AllureResults results = runStory ("stories/undefined.story" );
196+ final AllureResults results = runStories ("stories/undefined.story" );
198197
199198 assertThat (results .getTestResults ())
200199 .extracting (TestResult ::getName , TestResult ::getStatus )
@@ -207,7 +206,7 @@ void shouldProcessNotImplementedScenario() {
207206 @ SuppressWarnings ("unchecked" )
208207 @ Test
209208 void shouldAddParametersFromExamples () {
210- final AllureResults results = runStory ("stories/examples.story" );
209+ final AllureResults results = runStories ("stories/examples.story" );
211210
212211 final List <TestResult > testResults = results .getTestResults ();
213212
@@ -226,7 +225,7 @@ void shouldAddParametersFromExamples() {
226225
227226 @ Test
228227 void shouldRunMultiplyScenarios () {
229- final AllureResults results = runStory ("stories/multiply.story" );
228+ final AllureResults results = runStories ("stories/multiply.story" );
230229
231230 assertThat (results .getTestResults ())
232231 .extracting (TestResult ::getName , TestResult ::getStatus )
@@ -238,7 +237,28 @@ void shouldRunMultiplyScenarios() {
238237
239238 }
240239
241- private AllureResults runStory (final String storyResource ) {
240+ @ Issue ("163" )
241+ @ Test
242+ void shouldNotFailIfGivenStoriesSpecified () {
243+ final AllureResults results = runStories ("stories/given.story" );
244+
245+ assertThat (results .getTestResults ())
246+ .extracting (TestResult ::getName , TestResult ::getStatus )
247+ .containsExactly (tuple ("Add a to b" , Status .PASSED ));
248+
249+ assertThat (results .getTestResults ())
250+ .flatExtracting (TestResult ::getSteps )
251+ .extracting (StepResult ::getName )
252+ .containsExactly (
253+ "Given a is 5" ,
254+ "Given b is 10" ,
255+ "When I add a to b" ,
256+ "Then result is 15"
257+ );
258+
259+ }
260+
261+ private AllureResults runStories (final String ... storyResources ) {
242262 final AllureResultsWriterStub writer = new AllureResultsWriterStub ();
243263 final AllureLifecycle lifecycle = new AllureLifecycle (writer );
244264
@@ -270,7 +290,7 @@ private AllureResults runStory(final String storyResource) {
270290 final AllureLifecycle cached = Allure .getLifecycle ();
271291 try {
272292 Allure .setLifecycle (lifecycle );
273- embedder .runStoriesAsPaths (singletonList ( storyResource ));
293+ embedder .runStoriesAsPaths (Arrays . asList ( storyResources ));
274294 } finally {
275295 Allure .setLifecycle (cached );
276296 }
0 commit comments