gpt4 book ai didi

java - 带有 JUnit 测试的 Android Studio

转载 作者:太空狗 更新时间:2023-10-29 14:16:17 25 4
gpt4 key购买 nike

更新

根据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 包中的包私有(private)类。 build.gradle android 对象如下所示:

android {
compileSdkVersion 19
buildToolsVersion '19.0.1'

defaultConfig {
minSdkVersion 14
targetSdkVersion 19
testPackageName "com.example.app.test"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
testFunctionalTest true
}
}

我也尝试过使用旧结构,并收到错误“App/AndroidManifest.xml 中缺少主 list ”:

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() {

}
}

我也尝试过扩展 AndroidTestCase,但两个父类都收到了这个错误:

!!! 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 Platform |模块 |依赖项部分。所以,基本上,我不知道如何在类路径中将 junit 依赖项移动到 Android 依赖项之上。

最佳答案

通过将测试文件移动到被测(包私有(private))类所在的同一个包中解决了这个问题:

MyProject/
src/
androidTest/
java/
com.example.app/
... (source code for tests) ...
main/
AndroidManifest.xml
java/
com.example.app/
... (source code for main application) ...
res/
... (resources for main application) ...

关于java - 带有 JUnit 测试的 Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21713660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com