【发布时间】:2011-07-01 18:45:17
【问题描述】:
我是 JUnit 测试的新手,我正在尝试通过以下代码测试数据库访问:
public class SeuticketTest extends ActivityInstrumentationTestCase2<Seuticket> {
private Seuticket mActivity;
public SeuticketTest(String name) {
super("br.com.code.seuticket.android.view",Seuticket.class);
setName(name);
}
@Override
protected void setUp() throws Exception {
super.setUp();
mActivity = this.getActivity();
}
public void testTicketInsertion() {
Ticket ticket = new Ticket("123453", "Vip", new Date(), "Vila Country");
PersistenceTicket persistence = new PersistenceTicket(mActivity);
persistence.addTicket(ticket);
assertEquals(persistence.fetchTicket(ticket.getTicketCode()).getTicketCode(),ticket.getTicketCode());
}
public void testUserInsertion() {
User user = new User();
user.setPin("1234");
user.setPhone("9241173");
PersistenceUser persistence = new PersistenceUser(mActivity);
persistence.addUser(user);
assertEquals(persistence.fetchUser().getPin(), user.getPin());
}
}
但我的测试在完成 testTicketInsertion 后卡住了,第二个测试会一直运行,有时在运行测试之前,控制台会显示此消息: 测试运行失败:进程崩溃。
有什么想法吗? 希望能在这里找到答案。 感谢人们!
【问题讨论】:
-
控制台/调试日志中有任何堆栈跟踪吗?当您只运行第一个测试时会发生什么?只有第二个?当你改变订单?您是否可以单独测试 PersistenceTicket(提供模拟 Activity 或其他东西?)如果persistence.fetchUser() 方法是罪魁祸首,我不会感到惊讶,但您必须调试它。
-
显然测试按字母顺序运行...不管写的顺序,有时会在控制台出现错误:进程崩溃。不知道它来自哪里......我试图擦除第二种方法,并编写另一种方法,发生同样的事情。
-
我得到了同样的结果。 @phtrivier,没有 logcat 结果,只有测试控制台说 Process crashed。
标签: android junit automated-tests