1

我尝试使用不同的实例进行测试,但始终使用第一个。在第二次测试期间,显示的是第一个实例的内容。我不知道去哪里找。

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 回答