使用 IntelliJ,我可以创建目录“test”,添加一些 POJO 测试文件并通过 IDE 运行它们。
在 Android Studio 中,我找不到这样做的方法。我试图修改 build.gradle,但我总是得到找不到类的异常。
下一步是设置一个规则,仅在测试期间加载一些 Guice 绑定(bind)。
我的项目看起来像:
Project
Module
LibraryModule
src
main
java/com/temp/...
test
java/com/temp/TestClass.java
测试类.java:
package com.temp;
import org.junit.Before;
import org.junit.Test;
public class TestClass {
@Before
public void setup() throws Exception {
}
@Test
public void testSomething() {
//do something
}
}
build.gradle:
sourceSets {
unitTest {
java.srcDir file('src/test/java')
resources.srcDir file('src/test/resources')
}
}
dependencies {
instrumentTestCompile fileTree(dir: 'libs/test', include: '*.jar')
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:support-v4:13.0.0'
}
我得到的错误:
Class not found: "com.temp.TestClass"
当我在 IntelliJ 中运行同一个项目时,我没有收到任何错误。任何提示都会有所帮助,谢谢!
最佳答案
完整答案(基于我在这里找到的:http://tryge.com/2013/02/28/android-gradle-build/)
build.gradle:
sourceSets {
unitTest {
java.srcDir file('src/test/java')
resources.srcDir file('src/test/resources')
}
}
configurations {
unitTestCompile.extendsFrom runtime
unitTestRuntime.extendsFrom unitTestCompile
}
dependencies {
unitTestCompile files("$project.buildDir/classes/release")
}
task unitTest(type: Test, dependsOn: assemble) {
description = "run unit tests"
testClassesDir = project.sourceSets.unitTest.output.classesDir
classpath = project.sourceSets.unitTest.runtimeClasspath
}
check.dependsOn unitTest
dependencies {
unitTestCompile fileTree(dir: 'libs/test', include: '*.jar')
unitTestCompile fileTree(dir: 'libs', include: '*.jar') // redundant, but don't know how to fix it
compile fileTree(dir: 'libs', include: '*.jar')
compile 'com.android.support:support-v4:13.0.0'
}
然后,要为 Guice 添加测试绑定(bind),请让您的测试类扩展它:
public class PojoTestCase {
public PojoTestCase() {
Guice.createInjector(new TestBindings()).injectMembers(this);
}
}
以及运行方式:
./gradlew unitTest
此外,测试不会从 Android Studio 运行,但我现在可以接受。
关于android - 如何使用测试绑定(bind)在 Android Studio 中运行 POJO 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709178/