我已经创建了一个计时器类,并使用junit4进行测试。计时器通知另一个类,然后激活方法。在测试时我无法检查发送给观察者的值是什么,因为编译器卡在用于计时器的always循环中。这是计时器的测试和开始代码。
public void testSimpleTimerAsThread() throws InterruptedException
{
SimpleTimer st = new SimpleTimer(1000);
st.start();
Thread.sleep(250); // So we are 1/4th a second different
for (int x=0;x<5;x++)
{
assertEquals(x, st.getRound()); // assumes round starts at
Thread.sleep(1000); // wait for the next time change
}
}
public void start()
{
while (flag)
{
timeChanged();
try
{
// Sleep for var seconds.
Thread.sleep(1000);
}
catch (InterruptedException e)
{
}
}
}
感谢您的帮助。
答案 0 :(得分:0)
在SimpleTimer
课程中,您应该覆盖run()
方法,而不是start()
。
假设SimpleTimer
扩展Thread
,您已覆盖实际创建并启动线程的Thread
中的方法,因此没有创建新线程并且您的线程代码正在执行start()
时的主线程,这就是它挂起的原因。