我尝试为我的测试使用不同的实例,但总是使用第一个实例。 在第二次测试期间,它是显示的第一个实例的内容。 我不知道在哪里寻找。
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();
}
}
答案 0 :(得分: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
个对象可能彼此相等。但它们不会是相同的对象。