If you want to use the cucumber runner, you can not use QAF as it works with TestNG. Also I think that switching to QAF just to use data providers is overkill.
You might want to use qaf-cucumber as stated by user861594 (it offers the choice to use the cucumber runner and all QAF BDD2 features), but for the moment the plugin is in beta; I tested it and it is buggy (placeholders for examples not working, incompatible with pretty). Hopefully a stable release will come soon.
The solution I chose is in principle the same as what qaf-cucumber does: overwrite the Gherkin compiler coming as a transitive dependency with cucumber, and only change how it parses scenario outline so examples can be extracted from .csv/.txt files. To do so you have to create the class gherkin.pickles.Compiler
. This is the same path than the real gherkin compiler, so this will overwrite the reference to it. Then you can copy/paste the code of the real gherkin compiler and modify it to suit your needs.
Of course this not a perfect solution. For example, if the path to the gherkin compiler changes after a version upgrade, the path to your compiler will have to change too.
Note: For the moment, qaf-cucumber does not work with the pretty plugin because pretty parses the scenario again before printing it, but not with the Compiler
class of gherkin. This is done in the class io.cucumber.core.plugin.TestSourcesModel
, so to make pretty work you may also have to overwrite this class. I did both and it works fine so far.