2010-08-17 68 views
5

根據this SDK guide,可以通過創建標準應用程序項目,引用庫項目,然後對應用程序進行單元測試進行測試來實現庫項目的單元測試。自包含的測試庫項目找不到庫類

但是,我這樣做,並啓動測試應用程序時,我得到的消息

No tests found with test runner 'JUnit 3'.

我使用Eclipse和Android ADT插件,所有的最新版本。

注:項目編譯得很好。測試項目也安裝到模擬器上。但在控制檯中,我可以看到它尋找<library>.apk,這當然不存在,因爲我將它作爲庫編譯到測試項目中。

任何人都得到這個工作?如果是這樣,這裏的詭計是什麼?

更新:發現並解決了實際上包含測試類(!)的問題後,測試運行器現在可以找到所有測試。 ,所有的測試失敗,但下列情況除外:

java.lang.NoClassDefFoundError: <nameOfClassInLibraryProject>

nameOfClassInLibraryProject在庫項目中定義的類。這些類應該被編譯到測試項目中,事實上,一切都編譯得很好。但是當運行測試項目時,運行時似乎沒有找到庫類。

回答

5

經過太多的擺弄和浪費時間在Eclipse中,我設法讓Android庫項目工作。

按照Working with Library Projects文章:

Instead, you must compile the library indirectly, by referencing the library from a dependent application's build path, then building that application.

的問題是,我理解這意味着庫項目應該被添加到項目選項卡中Java構建路徑。這樣做會使測試項目編譯,因爲編譯器顯然可以使用庫代碼。但由於該庫本身並未編譯爲.jar或.apk,因此庫類不會部署到設備中。

的解決方案是庫項目添加到項目,而在來源選項卡上,使用鏈接源...按鈕添加庫/ src文件夾。是的,它是庫文件夾,而不是庫項目根目錄,必須鏈接到測試項目中。

+1

我有同樣的問題(NoClassDefFoundError),雖然沒有自包含的測試lib項目,但在引用android庫項目的應用程序項目的測試項目。你的解決方案工作得很好,非常感謝你解決這個問題。 – jpo 2011-06-29 10:40:46

+1

感謝您的支持。只有當我從我的項目屬性中刪除項目引用並將庫添加爲庫項目時,它才起作用。 – 2013-05-06 21:27:25

+1

它更容易在您的項目屬性中添加庫,在Android部分中作爲庫添加,如下所示:http:// stackoverflow。com/questions/8248196/how-to-add-a-library-project-to-a-android-project – theV0ID 2014-02-02 14:31:17