1

テストにさまざまなインスタンスを使用しようとしていますが、最初のインスタンスが常に使用されます。2番目のテストでは、最初のインスタンスのコンテンツが表示されます。どこを探すべきかわからない。

public class MyActivityTest extends
    ActivityInstrumentationTestCase2<MyActivity> {

private Solo solo;  

public MyActivityTest() {
    super(MyActivity.class);
}

protected void setUp() throws Exception {
    super.setUp();
    Authentication.setSessionId("mysessionid", this.getInstrumentation()
            .getTargetContext().getApplicationContext());
    solo = new Solo(getInstrumentation(), getActivity());
}

public void testFailFetching() {

    CommunicationFactory.setInstance(MyActivityData.FALSE_QUIZCOMM_DEFAULT);

    //some Solo tests

}

public void testSucceedFetching() {

    CommunicationFactory.setInstance(MyActivity.CORRECT_QUIZCOMM_DEFAULT);

    //some Solo tests

}

@Override
protected void tearDown() throws Exception {
    CommunicationFactory.setInstance(null);
    super.tearDown();
}
}
4

1 に答える 1

0

このsetUp()メソッドは、各テストの前に呼び出されます。例外をスローせずに完了した場合 (おそらくテストが中止される可能性があります)、soloテストごとに変数が再構築されます。次のテスト コードは、これを示しています。

public class ExampleTest extends TestCase {
  private static int num = 1;

  private Foo foo;  

  @Override
  protected void setUp() throws Exception {
    super.setUp();
    foo = new Foo(num++);
  }

  public void testA() {
    foo.printNum();
  }

  public void testB() {
    foo.printNum();
  }

  private static class Foo {
    private final int num;

    public Foo(int num) {
      this.num = num;
    }

    public void printNum() {
      System.out.println(num);
    }
  }
}

これは以下を出力します:

1
2

別々のテストでSoloオブジェクトが互いに等しい可能性があります。しかし、それらは同じオブジェクトにはなりません。

于 2012-11-25T21:50:09.153 に答える