0

私は3つのクラス(classA、ClassB、ClassC)とsolo_dクラスを使用している同じ問題を抱えています.ClassCではテストを行い、ClassAとClassBではsolo.sleepのみを使用しています

public class ClassA extends Solo_d{
public void click_on_save(){
Log.v("Test" , "Test in classA");
solo.sleep(5000);                // getting error null pointer exception 
solo.clickOnText("Saved")
}}


public class ClassC extends Solo_d {
ClassA aa = new ClassA();
@Test
public void test001(){
Log.v("Test" , "Test Start ");
aa.click_on_save();
}}

私はclassAと同じClassBを使用し、ClassCで使用しています

Solo_d クラスで、私は適切なアクティビティとソロの定義を与えました。これは、個別に正常に動作し、ClassB として使用している
場合は正常に動作します継承の順序を知るのが難しい

しかし、私は NullPointerException を取得しています 誰でもこれを手伝うことができます

4

1 に答える 1

0

クラスAにコンストラクタを追加し、「Solo_dを拡張」を削除する必要があると思います

public class ClassA{

    static Solo solo;

    //contructor
    public ClassA(Solo _solo){
      solo = _solo
    }

    public void click_on_save(){
    Log.v("Test" , "Test in classA");
    solo.sleep(5000);
    solo.clickOnText("Saved");
    }
}

そしてあなたのClassCで:

public class ClassC extends Solo_d {

    @Test
    public void test001(){
    ClassA aa = new ClassA(solo);
    Log.v("Test" , "Test Start ");
    aa.click_on_save();
    }
}

ClassC で同じコンストラクターを作成し、それを Solo_d クラス (たとえば、setUp() メソッド) で呼び出すことができます。

public class ClassC {

    static Solo solo;
    public ClassC(Solo _solo){
        solo = _solo
    }
    ClassA aa = new ClassA(solo);
    @Test
    public void test001(){
    Log.v("Test" , "Test Start ");
    aa.click_on_save();
    }
}

それは私のために働きます、それがあなたに役立つことを願っています.

于 2013-09-27T13:22:36.987 に答える