2015-12-16 60 views
0

我有我需要在一個測試套件之一運行2個測試類是RestaurantModelTest另一個是CartModelTest.class不能運行Android測試套件:在線程「主要」拋出java.lang.ClassNotFoundException異常

@Config(sdk = 16, manifest = "src/main/AndroidManifest.xml") 
@RunWith(RobolectricTestRunner.class) 
public class RestaurantModelTest { 

    //setUp code here... 

    @Test 
    public void testFindByLocation() throws Exception { 
     //test code here 
    } 

} 

所以我跟着一些在線教程和他們指定要創建一個TestSuite類像這樣我的2班進行測試:

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
@RunWith(Suite.class) 
@Suite.SuiteClasses({ 
     RestaurantModelTest.class, 
     CartModelTest.class 
}) 
public class ModelsTestSuite { 

} 

然後,我必須創建一個TestSuiteRunner類:

import org.junit.runner.JUnitCore; 
import org.junit.runner.Result; 
import org.junit.runner.notification.Failure; 

public class TestSuiteRunner { 


    public static void main(String[] args){ 
     Result result = JUnitCore.runClasses(ModelsTestSuite.class); 
     for (Failure failure : result.getFailures()){ 
      System.out.println(failure.toString()); 
     } 
     System.out.println(result.wasSuccessful()); 

    } 
} 

我使用Android的工作室,當我討厭右鍵 - >運行TestSuiteRunner ......主()我得到Exception in thread "main" java.lang.ClassNotFoundException:

任何幫助,非常感謝!

+0

我想你錯過了一些jar文件 – SpringLearner

回答

1

所有你需要做的,運行在套件中的所有測試 - 是:

  1. 中單擊鼠標右鍵ModelsTestSuite
  2. 點擊「運行ModelsTestSuite」

就是這樣,所有的測試在套件中將被執行。你並不真的需要爲TestSuiteRunner類:

enter image description here

NB!在解決此問題時,我發現了另一個奇怪的問題:除非我在Android Studio 2.0中使用禁用即時運行(首選項 - >生成,執行,部署 - >即時運行 - >啓用即時運行 - 取消選中),我所有的Robolectric測試都是不符合java.lang.ClassNotFoundException。 jFYI。

您得到java.lang.ClassNotFoundException的原因是普通java項目和Android項目不兼容。您可以在這裏閱讀更多:Can Android Studio be used to run standard Java projects?

因此,從理論上講,在這種形式下有TestSuiteRunner,您可以將它移動到單獨的Java庫模塊並鏈接Android應用程序的模塊,作爲此Java庫的依賴項。不幸的是,你會得到這樣的警告:

警告:忽略模塊'應用程序'對模塊'lib'的依賴。 Java模塊不能依賴於Android模塊

即它不會以這種方式工作。

我希望它有幫助。

+0

omg那就是它太簡單了!但試圖找到文件是有點diffucult你是最好的謝謝!!!!!,你怎麼知道如何做到這一點?網上有任何文檔我錯過了嗎? – Jeka

+0

@JesSys我的榮幸!實際上,我還沒有看到關於它的文檔:這種方法看起來與Android測試框架的其餘部分一致,顯然我花了很多時間挖掘Android的測試:-)。所以我只是嘗試了 - 幸運的是它工作。 –

相關問題