2014-03-07 53 views
5

我編寫了一個簡單的測試用例類,並將其放置在Android Studio的默認測試目錄中:「src/androidTest」。我創建了一個Android測試版本配置,用於查找模塊中的所有測試。當我運行構建配置時,我的測試不會執行,並在logcat中收到以下消息:W/TestGrouping﹕ Invalid Package: '' could not be found or has no tests。如果我指定了測試包或者甚至是特定的測試類,我會得到類似找不到的消息。Android Studio未找到TestCase類

我的測試類如下:

public class FirstTest extends InstrumentationTestCase { 

public void testSample() { 
     final int expected = 1; 
     final int reality = 5; 
     assertEquals(expected, reality); 
    } 
} 

我的build.gradle文件看起來像這樣:

apply plugin: 'android' 

android { 
    compileSdkVersion 19 
    buildToolsVersion "19.0.1" 

    defaultConfig { 
     minSdkVersion 8 
     targetSdkVersion 19 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      runProguard false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
    } 
} 

dependencies { 
    compile 'com.android.support:gridlayout-v7:19.0.1' 
    compile 'com.android.support:support-v4:19.0.1' 
    compile 'com.android.support:appcompat-v7:19.0.1' 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
} 

我運行的Android gradle這個插件的0.9版本。我的頂級build.gradle(與app目錄同行)看起來像這樣。

// Top-level build file where you can add configuration options common to all sub-projects/modules. 

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.9.+' 
    } 
} 

allprojects { 
    repositories { 
     mavenCentral() 
    } 
} 

我的項目目錄結構如下:

app src androidTest java main java res

+0

包含您的項目目錄結構以進行測試。 – pyus13

回答

4

的androidTest/java目錄下的封裝結構需要精確地平行主/ java目錄下的結構上方

我的問題是,根據主封裝結構是com.mydomain.myapp.subpackage和目錄結構下droidTest是com.mydomain.myapp.subpackage.somethingelse

一旦包裝結構匹配,測試就被發現並且完美無瑕地執行。

+0

有趣。我不會有這個要求。您應該能夠將代碼放在「com.mydomain.myapp.subpackage」中,並在「com.mydomain.myapp.subpackage.test」中進行測試,但如果您這樣做,則需要了解受保護的/軟件包範圍。 – swooby

+0

我也不會這麼想。我沒有看到任何地方記錄,它可能只是在加拿大版Android Studio中的一個錯誤。但是,目錄結構是我做出的唯一改變,當它開始工作時。 – joates

0

請發表你的整個的build.gradle文件。
您使用的是什麼版本的'com.android.tools.build:gradle'?
在0.8,默認的測試路徑是「instrumentTest/JAVA/......「。
在0.9,默認的測試路徑改爲 」androidTest/JAVA/...「。

要使用androidTest,你應該有:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:0.9.+' 
    } 
} 
+0

是的,好的想法,這個信息是在我上面編輯的頂層build.gradle中。仍然沒有骰子。 – joates

4

您不必真正重建src目錄的結構來創建適當的測試。

測試類和測試類應該在同一個包中。

但是至於文件夾,它們應該分開。所以,對於測試和正常來源,我們使用不同的根源。

問題是,如何設置這些根。在AS 1.5(或許更早版本可以做到這一點,太),它可以輕鬆完成:

  1. 幾乎目錄沒有任何結構。它的某個地方有測試來源的根目錄。右鍵點擊它並且Mark Directory As ... Sources Root
  2. 爲測試製作另一個任意目錄結構。它的某處有測試源的根目錄。右鍵點擊它並Mark Directory As ...Test Sources Root

在這些根的路徑的測試類必須是相同的路徑,以從它的根被測試類,用於沿着這些路徑dir名稱定義包和它們應該相同。但你不必擔心根源之上的結構。

使用此方法,您可以將測試添加到任何現有的資源結構。如果你自己創造了這個結構,那就把它變得比較傳統。

編輯。注意,Java 9模塊的文件夾結構絕對不同。

+0

我從來沒有發現,我來到STS intellij,並習慣於配置約定。謝謝 – Wudang

+0

忘記會議:-)現在我正在玩Java9模塊化系統,並且那裏的文件夾結構絕對是特殊的和不同的。 – Gangnus

相關問題