如何在 Android Studio 中将我的 Android 测试库与我的应用程序库分开?
How do I keep my Android testing libraries separate from my application libraries in Android Studio?
我在 build.gradle 文件中设置了我的模块依赖项:
dependencies
{
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:22.2.0'
androidTestCompile fileTree(dir: 'libs/test', include: ['*.jar'])
}
在我的 libs 文件夹中,我拥有构建我的应用程序所需的所有库。我将 运行ning 测试所需的库放在名为 "test"
的子文件夹中
这似乎在我的代码编译时起作用,我可以制作我的模块。但是,当我尝试 运行 我的任何测试时,它找不到我试图包含的测试库。 Gradle 控制台中的错误实际上指向我没有显示任何错误的代码片段。
此外,我的测试设置正确,因为我可以通过将所需的 jars 移动到 libs 文件夹并将我的依赖项更改为
来让它们进入 运行
dependencies
{
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:22.2.0'
}
但是如果 androidTestCompile 不工作,我真的看不出它有什么意义。如果不需要,我也宁愿不将这些 jar 文件包含在我的 apk 中。
如果有帮助,我正在使用 Android 工作室版本 1.2.2 和 Gradle 插件版本 1.2.3。
在此先感谢您的帮助。
您应该使用 sourceSets 让您的 apk 不受测试库的影响
Gradle User Guide
使用 'main' 一个用于生产代码,使用 'androidTest' 一个用于测试,gradle 然后自动添加指定的源。
sourceSets {
main {
...
}
androidTest {
...
}
}
见下例。
创建 tests 文件夹 与 src 文件夹平行。
将所有测试用例创建到该文件夹中。
如果您在另一个路径中创建文件夹,则需要为此调用。(已添加到代码中。)
dependencies {
androidTestCompile files('libs/dexmaker-1.1.jar')
androidTestCompile files('libs/org.mockito:mockito-core:3.9.5')
androidTestompile files('espresso-1.0-SNAPSHOT-bundled.jar')
}
defaultConfig {
testApplicationId "xxx.xx.abc"
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
instrumentTest {
java.srcDirs = ['tests/src']
}
androidTest.setRoot('tests')
androidTest.java.srcDirs = ['tests/src']
我在 build.gradle 文件中设置了我的模块依赖项:
dependencies
{
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:22.2.0'
androidTestCompile fileTree(dir: 'libs/test', include: ['*.jar'])
}
在我的 libs 文件夹中,我拥有构建我的应用程序所需的所有库。我将 运行ning 测试所需的库放在名为 "test"
的子文件夹中这似乎在我的代码编译时起作用,我可以制作我的模块。但是,当我尝试 运行 我的任何测试时,它找不到我试图包含的测试库。 Gradle 控制台中的错误实际上指向我没有显示任何错误的代码片段。
此外,我的测试设置正确,因为我可以通过将所需的 jars 移动到 libs 文件夹并将我的依赖项更改为
来让它们进入 运行dependencies
{
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:support-v4:22.2.0'
}
但是如果 androidTestCompile 不工作,我真的看不出它有什么意义。如果不需要,我也宁愿不将这些 jar 文件包含在我的 apk 中。
如果有帮助,我正在使用 Android 工作室版本 1.2.2 和 Gradle 插件版本 1.2.3。
在此先感谢您的帮助。
您应该使用 sourceSets 让您的 apk 不受测试库的影响 Gradle User Guide 使用 'main' 一个用于生产代码,使用 'androidTest' 一个用于测试,gradle 然后自动添加指定的源。
sourceSets {
main {
...
}
androidTest {
...
}
}
见下例。
创建 tests 文件夹 与 src 文件夹平行。 将所有测试用例创建到该文件夹中。 如果您在另一个路径中创建文件夹,则需要为此调用。(已添加到代码中。)
dependencies {
androidTestCompile files('libs/dexmaker-1.1.jar')
androidTestCompile files('libs/org.mockito:mockito-core:3.9.5')
androidTestompile files('espresso-1.0-SNAPSHOT-bundled.jar')
}
defaultConfig {
testApplicationId "xxx.xx.abc"
testInstrumentationRunner "com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
instrumentTest {
java.srcDirs = ['tests/src']
}
androidTest.setRoot('tests')
androidTest.java.srcDirs = ['tests/src']