我正在尝试采用TDD方法来创建Android应用程序。我使用ORMLite和Mockito/Robolectric进行测试。我在测试一件简单的事情时遇到了麻烦:
(某些包装DAO调用的类中的方法)
public List<ITask> getTasksForNextTwoWeeks() throws SQLException {
// Code to be written
}
好吧,里面的代码将只是一个正确的查询方法调用。
测试该代码的最佳方法是什么?我一直在考虑这个问题,但如果不访问真实的数据库(无论是真实的还是测试的),就想不出解决方案。
欢迎任何建议。
我正在尝试为我的android应用程序设置robolectric。我的主代码有一个子模块和一个外部库,并且我不使用Maven。
在按照设置了一个robolectric项目之后,当我尝试运行测试时,它给出了以下错误
java.lang.IllegalStateException: there must have been some overlap for resourceIdToResName! expected 3014 but got 3013
at org.robolectric.res.MergedResourceIndex.merge(MergedResourceIndex.j
这是我的基本测试课程:
@RunWith(RobolectricTestRunner.class)
public class MainActivityTest {
@Before
public void setup() {
//do whatever is necessary before every test
}
@Test
public void testActivityFound() {
Activity activity = Robolectric.buildActivity(MainActivity.class).create().get();
我正在尝试将机器人电气集成到我的新项目中。我使用下面的链接来理解和实现机器人电气。
但是,我在运行测试类时遇到了错误。
Error:Gradle: Execution failed for task ':app:compileDebugJava'.
> Compilation failed; see the compiler error output for details.
E:\junitTest\android-studio-robolectric-example-master\JunitTestApp\app\src\test\java\com\inapp\
当我试图让Robolectric RC3在Android中工作时,我得到了
Caused by: java.lang.RuntimeException: build/intermediates/bundles/debug/AndroidManifest.xml not found or not a file; it should point to your project's AndroidManifest.xml
at org.robolectric.manifest.AndroidManifest.validate(AndroidManifest.java:120)
at org.
我一直在用罗波利克做测试,一切都很好。然后,我在我的应用程序类中实现了Google,测试开始失败。当我在测试期间膨胀视图时,似乎会出现失败。下面是堆栈跟踪:
java.lang.NullPointerException: null
at com.google.analytics.tracking.android.AnalyticsGmsCoreClient$AnalyticsServiceConnection.onServiceConnected(AnalyticsGmsCoreClient.java:176)
at org.robolectric.shadows.ShadowApplicat
Robolectric什么时候才能与Android 29兼容?通过将targetSdkVersion和compileSdkVersion更改为29,我是不是太早升级了?
当我运行我的单元测试时,我得到了一个巨大的堆栈跟踪:
java.lang.IllegalArgumentException: API level 29 is not available
at org.robolectric.plugins.UnknownSdk.getJarPath(UnknownSdk.java:25)
at
org.robolectric.internal.AndroidSandbox$S
可能的问题是什么?我的Robolectric测试不久前运行得很好,但现在它们都失败了,并出现了相同的错误。我能想到的唯一变化是更改为版本2.1.1。我使用RobolectricTestRunner运行它们,运行配置指向实际的应用程序目录。
但每次测试都会失败,因为访问首选项时,应用程序的应用程序类始终为空:
java.lang.NullPointerException: can't get a shadow for null
at org.robolectric.bytecode.ShadowWrangler.shadowOf(ShadowWrangler.java:4
更新1
删除测试类的ServiceTestCase扩展后,我编辑了gradle文件以将testInstrumentationRunner更改为org.robolectric.RobolectricTestRunner,但我得到了另一个错误:
Running tests
Test running started
Test running failed: Instrumentation run failed due to 'java.lang.NoSuchMethodException'
Empty test suite.
我搜索了Google,但是我找不到为什么我会收到这个错误消
我试图在单元测试(测试文件夹)中测试ViewModel(AndroidViewModel parent),但在使用
val application = ApplicationProvider.getApplicationContext<Application>()
它给出了这个错误
java.lang.IllegalStateException: No instrumentation registered! Must run under a registering instrumentation.
ExampleUnitTest
class ExampleUnitTest {