2013-02-08 29 views
6

Android sınıfında (Fragment, benim durumumda) alay etmek için jMockit'i kullanırken android.jar'da stubbed yöntemlerini değiştirmek için Robolectric kullanarak bir birim testi gerçekleştirmeye çalışıyorum. Ancak, işe almak için görünmüyor olabilir. Ben @RunWith(RobolectricTestRunner.class) ile test sınıfı açıklama, ben alıyorum:jmockit ve robolectric birlikte bulunabilir mi?

java.lang.IllegalStateException: JMockit düzgün başlatılmadı; (JUnit kullanılıyorsa; değilse, belgeleri kontrol edin) o jmockit.jar sınıf yolunda junit.jar öncesinde kontrol Ben olsun @RunWith(JMockit.class) veya hiç @RunWith, kullanırsanız

"Stub'ı!" istisnalar.

Şu anda, sınıf yolumun şu sırayla işleri var: robolectric, jmockit, junit, android.

Dışarıda iyi oynamak için jmockit ve robolectric'e sahip olan var mı?

+0

Düşündüğüm PowerMock benziyor. Henüz bir çözüm bilmiyorum –

cevap

5

Bu mümkün olmalıdır. Bunu test etmedim, ama kendi test koşucunu oluşturabilirsin. 'İki Robolectric biri Of

çok daha karmaşıktır, bu nedenle don:

JMockit ve Robolectric testi koşucular için kaynak bir göz atın Bu işlevselliği çoğaltmak istiyorum. JMockit test koşucusu oldukça basittir. RobolectricTestRunner'ı genişletmek ve JMockit işlevselliğini dahil etmek için çalışmalıdır.

import mockit.internal.startup.*; 
class MyTestRunner extends RobolectricTestRunner { 

    static { Startup.initializeIfNeeded(); } 

    /** 
    * Constructs a new instance of the test runner. 
    * 
    * @throws InitializationError if the test class is malformed 
    */ 
    public MyTestRunner(Class<?> testClass) throws InitializationError 
    { 
     super(testClass); 
    } 
} 
+0

İlginç, öneri için teşekkürler! –

+0

@Joe, PowerMock ve Robolectric için benzer bir yaklaşım denemek istedim. Ama çabuk turda başarısız oldum. Oldukça karmaşık. Belki ikinci tur yapacağım :) –

+0

Bu yardımcı olmadı. Sorun, projeye JMockit bağımlılığı eklediğimde (gerçekte herhangi bir yerde kullanmadan) Roboelectric testlerinin "Uyumlu hiçbir yöntem bulunamadı: fireTestRunStarted" – altumano

2

Sürüm 1.8'de (27 Nisan 2014) JMockit, Robolectric ile birlikte çalışabilir.

JMockit now works fine with the Robolectric Android testing tool (tested with Robolectric 2.2 and 2.3). 

http://jmockit.org/changes.html

İlgili konular