UPDATEAndroid Studio中使用JUnit測試
按照new build system,層次應該是這樣的:
MyProject/
src/
androidTest/
java/
com.example.app.test/
... (source code for tests) ...
main/
AndroidManifest.xml
java/
com.example.app/
... (source code for main application) ...
res/
... (resources for main application) ...
不過,我並沒有在com訪問包私有類。 example.app包。該機器人的build.gradle對象的樣子:
android {
compileSdkVersion 19
buildToolsVersion '19.0.1'
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
testPackageName "com.example.app.test"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
testFunctionalTest true
}
}
我還使用舊的結構嘗試,並得到錯誤「主要從清單應用程序/ AndroidManifest.xml中缺少」:
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('tests')
}
待辦事項我需要使用舊的結構?新結構中缺少什麼將測試放在com.example.app包的範圍內?
更新2:
我看到在instrumentTest錯誤文件夾的AndroidManifest.xml文件中的元素 「無法解析符號 'com.example.app'」
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.example.app"/>
這是測試類:
package com.example.app.test;
import junit.framework.TestCase;
public class SimpleTest extends TestCase {
public SimpleTest(String name) {
super(name);
}
protected void setUp() throws Exception {
super.setUp();
assertTrue(true);
}
public void alwaysPasses() {
}
}
我也嘗試延長AndroidTestC ASE和收到此錯誤與兩個父類:
!!! JUnit version 3.8 or later expected:
java.lang.RuntimeException: Stub!
at junit.runner.BaseTestRunner.<init>(BaseTestRunner.java:5)
at junit.textui.TestRunner.<init>(TestRunner.java:54)
at junit.textui.TestRunner.<init>(TestRunner.java:48)
at junit.textui.TestRunner.<init>(TestRunner.java:41)
at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:185)
at com.intellij.rt.execution.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:168)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
我試圖解決這個solution錯誤,但沒有了Android 1.6平臺,在項目結構|模塊|依賴部分。所以,基本上,我不知道如何將junit依賴關係移動到類路徑中的Android依賴關係之上。
我會推薦閱讀http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Testing的搖籃下指導測試,然後修改您的問題與任何你仍然有問題。 –
謝謝你的資源!在閱讀build.gradle文件並搞亂之後,仍然存在一些bug。我也更新了這個問題。如果還有其他資源需要閱讀,請告訴我。 – iamreptar
http://tools.android。COM /科技的文檔/單元測試支持 –