Tôi có một lớp đơn giản Job
kéo dài HandlerThread:Robolectric 3.0, thất bại trong việc thử nghiệm một chức năng mà bắt đầu một HandlerThread
public class Job extends HandlerThread{
public Job(String name) {
super(name);
}
...
}
Sau đó, tôi có một lớp JobUtils
trong đó có một chức năng để có được một Job
& start()
nó :
public JobUtils {
public JobUtils() {
}
// I unit test this function in my test class below
public Job getAndStartJob(String name) {
Job job = new Job(name);
job.start();
}
}
tôi sử dụng Robolectric 3,0 trong thử nghiệm đơn vị của tôi, tôi thử nghiệm JobUtils
lớp getAndStartJob(String name)
functi vào lúc:
@RunWith(RobolectricTestRunner.class)
public class TestJobUtils{
@Test
public void testGetAndStartJob() {
JobUtils jobUtils = new JobUtils();
// error here
jobUtils.getAndStartJob(“test-job”);
…
}
}
Khi tôi chạy mã đơn vị thử nghiệm của tôi, tôi đã nhận lỗi
Exception in thread "test-job” java.lang.NullPointerException
at org.robolectric.shadows.ShadowLooper.getMainLooper(ShadowLooper.java:70)
at org.robolectric.shadows.ShadowLooper.doLoop(ShadowLooper.java:85)
at org.robolectric.shadows.ShadowLooper.loop(ShadowLooper.java:76)
at android.os.Looper.loop(Looper.java)
at android.os.HandlerThread.run(HandlerThread.java:60)
Dường như Robolectric không có khả năng để bắt đầu HandlerThread
(các job
instace trong mã của tôi), hoặc làm Tôi nhớ cái gì? Làm thế nào để thoát khỏi vấn đề này?