G.komq
G.komq

Reputation: 45

Execute one feature at a time during application execution

I'm using Karate in this way; during application execution, I get the test files from another source and I create feature files based on what I get.

then I iterate over the list of the tests and execute them.

My problem is that by using

CucumberRunner.parallel(getClass(), 5, resultDirectory);

I execute all the tests at every iteration, which causes tests to be executed multiple times.

Is there a way to execute one test at a time during application execution (I'am fully aware of the empty test class with annotation to specify one class but that doesn't seem to serve me here)

I thought about creating every feature file in a new folder so that I can specify the path of the folder that contains only one feature at a time, but CucumberRunner.parallel() accepts Class and not path.

Do you have any suggestions please?

Upvotes: 1

Views: 892

Answers (1)

Peter Thomas
Peter Thomas

Reputation: 58058

You can explicitly set a single file (or even directory path) to run via the annotation:

@CucumberOptions(features = "classpath:animals/cats/cats-post.feature")

I think you already are aware of the Java API which can take one file at a time, but you won't get reports.

Well you can try this, set a System property cucumber.options with the value classpath:animals/cats/cats-post.feature and see if that works. If you add tags (search doc) each iteration can use a different tag and that would give you the behavior you need.

Just got an interesting idea, why don't you generate a single feature, and in that feature you make calls to all the generated feature files.

Also how about you programmatically delete (or move) the files after you are done with each iteration.

If all the above fails, I would try to replicate some of this code: https://github.com/intuit/karate/blob/master/karate-junit4/src/main/java/com/intuit/karate/junit4/Karate.java

Upvotes: 1

Related Questions