更新
根据新的构建系统,层次结构应该如下所示:
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) ...
android {
compileSdkVersion 19
buildToolsVersion '19.0.1'
defaultConfig {
minSdkVersion 14
targetSdkVersion 19
testPackageName "com.example.app.test"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
testFunctionalTest true
}
}
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')
}
<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)
我尝试用这个解决方案解决这个错误,但是项目结构模块依赖项部分没有Android 1.6平台。所以,基本上,我不知道如何在类路径中将junit依赖项移到Android依赖项之上。
通过将测试文件移动到被测试的(package-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) ...
我正在为我的项目创建junit测试用例。我有下面的代码,我想在其中创建一个模拟, 我正在使用jUnit和mockito核心jar。我尝试了下面的代码, 使用上述代码,它在模拟loadProperties方法时抛出错误。如何模拟Spring静态类并返回我的模拟属性对象? 任何帮助都将不胜感激。
我有一个测试套件: 一类: B类: 现在的问题是位于下, 和 类正在。如果我评论带有测试服运行正常,但未注释,我得到: java.lang.非法状态异常: 无法加载应用程序上下文 在org . spring framework . test . context . cache . defaultcacheawarecontextloaderdelegate . load context(defau
问题内容: 在我们的项目中,我有几个JUnit测试,例如从目录中获取每个文件并对其进行测试。如果我在中实现了一种方法,那么它只会显示为可能失败或成功的一项测试。但是我对每个文件的结果都很感兴趣。如何编写一个/ 使得每个文件显示为单独的测试,例如在Eclipse的图形TestRunner中?(为每个文件编写显式测试方法不是一种选择。) 问题答案: 看看JUnit 4 中的 参数化测试 。 实际上,我
问题内容: 在Spring 4.1.17中使用Spring Boot 1.2.6.RELEASE似乎没有任何作用。我只想访问应用程序属性,并在必要时用测试覆盖它们(无需使用hack手动注入PropertySource) 这不起作用.. 也没有。 也不是 完整的测试用例.. 导致 似乎在3.x和4.x之间有很多相互矛盾的信息,我找不到可以肯定使用的任何信息。 问题答案: 事实证明,最好的方法(直到S
参数化测试可以将不同的数据输入到测试中。不过,我创建了一个示例计算器,希望为其创建参数化测试。但是,我发现您只能为单个测试创建一组参数化数据。 我已经创建了参数化测试,用于添加两个数字,得到预期的结果。由于预期结果会有所不同,因此该数据将不适用于减法运算。 有没有可能为每个加、减、乘、除测试提供参数化数据? 非常感谢您的建议,
我一直在设置一些合约JUnit 4测试(遵循回答这个问题的建议) - 例如,如果我有一个接口(我已经在示例中包含了泛型,因为我在我的项目中使用它们) - 但是,这是一个大大简化的示例: 我可以创建一个抽象的合同测试,例如: ...并为每个实现扩展此抽象测试类(我使用。我还将一些变量传递给抽象测试类,以测试接口的实现。 然而,实际上,一些接口返回的对象是其他接口的实现,我希望能够使用该接口的抽象契约