2013-06-09 17 views
10

के साथ रोबोलेक्ट्रिक छाया अनुप्रयोग प्राप्त हो रहा है तो मैंने अपने एंड्रॉइड एप्लिकेशन में वॉली सेट की है।एनपीई जब वोल्ली और डैगर

Robolectric.application प्रारंभ किया गया है और अन्य सभी परीक्षण सुचारू रूप से चलते हैं। मैक HTTP प्रतिक्रिया प्राप्त करने का प्रयास करते समय मुझे यह त्रुटि मिलती है।

यह मेरी परीक्षा है:

Exception in thread "Thread-3" java.lang.NullPointerException 
    at org.robolectric.shadows.ShadowLooper.getMainLooper(ShadowLooper.java:59) 
    at android.os.Looper.getMainLooper(Looper.java) 
    at org.robolectric.Robolectric.getUiThreadScheduler(Robolectric.java:1301) 
    at org.robolectric.shadows.ShadowSystemClock.now(ShadowSystemClock.java:15) 
    at org.robolectric.shadows.ShadowSystemClock.uptimeMillis(ShadowSystemClock.java:25) 
    at org.robolectric.shadows.ShadowSystemClock.elapsedRealtime(ShadowSystemClock.java:30) 
    at android.os.SystemClock.elapsedRealtime(SystemClock.java) 
    at com.android.volley.VolleyLog$MarkerLog.add(VolleyLog.java:114) 
    at com.android.volley.Request.addMarker(Request.java:174) 
    at com.android.volley.CacheDispatcher.run(CacheDispatcher.java:92) 

उत्तर

-2

मैं एक ही त्रुटि थी और मेरे अपने (और बदसूरत) SystemClock छाया का उपयोग करके इसे से बचने:

@RunWith(MyRobolectricTestRunner.class) 
public class ApiTests { 

    @Inject 
    protected Api api; 

    @Before 
    public void setUp() { 
     ObjectGraph.create(new AndroidModule(Robolectric.application), new TestApplicationModule()).inject(this); 
    } 

    @Test 
    public void shouldGetErrorList() throws Exception { 
     Project project = new Project("test", "test", "test", DateTime.now()); 
     addPendingProjectsErrorsResponse("response.json"); //adding response to FakeHttpLayer 

     api.getProjectErrors(project, new Listener<ProjectErrors>() { 
       @Override 
       public void onResponse(ProjectErrors response) { 
        assertNotNull(response); 
       } 
      }, new ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        throw new RuntimeException(error); 
       } 
      } 
     ); 
    } 
} 

यह त्रुटि मैं हो रही है।

छाया वर्ग:

@Implements(value = SystemClock.class, callThroughByDefault = true) 
public static class MyShadowSystemClock { 
    public static long elapsedRealtime() { 
     return 0; 
    } 
} 

परीक्षण कोड:

@Test 
@Config(shadows = { MyShadowSystemClock.class, ... }) 
public void myTest() { 
} 
-2

एक और वैकल्पिक हल अपने स्थापना विधि में

VolleyLog.DEBUG = false; 

फोन करके वॉली लॉगिंग अक्षम करने के लिए किया जाएगा।

संबंधित मुद्दे