0

Java インターフェイスで Cucumber テスト ステップ定義を定義したいと考えています。

public interface ITestSteps {
    @Before
    public void setUpLocal() throws Throwable;

    @When("^Landing screen is visible$")
    public void Landing_Screen_is_visible() throws Throwable;
}

他の 2 つのクラスがこのインターフェイスを実装します。

public class AppleTestSteps implements ITestSteps { ... } 
public class AndroidTestSteps implements ITestSteps { ... } 

環境名 (Android または Apple) のプロパティを取得し、オブジェクトを初期化する TestFactory クラスがあります。

ITestSteps steps = TestFactory(platformName);

問題: Cucumber は、オブジェクトを参照せずに、名前ごとに必要なステップを実行します。かかりLanding_Screen_is_visible()ませんsteps.Landing_Screen_is_visible()

Cucumber が必要なステップを名前で見つけようとする前に、インターフェースを実装することは可能ですか? 静的にしますか?

または、キュウリのステップを実装する別の方法があるのでしょうか? (手順は同じですが、実装が異なります)

4

1 に答える 1

0

あなたが探しているのは、同じステップの定義を持っているが、異なるテスト環境で使用するときに異なるアプリケーションドライバーを使用するドライバーパターンです。例

abstract class MyApplicationDriver {

     abstract void login();

次に Android の実装

class AndriodApplicationDriver extends MyApplicationDriver {

     void login(){};

そして別の

class AppleTestDriver extends MyApplicationDriver {

    void login(){};

テストで MyApplicationDriver をインターフェースとして使用してから、コンテキストで実装を使用します。これを行う方法については World オブジェクトを確認する必要があります。

于 2013-10-25T09:29:52.680 に答える