Tag: 单元测试

android数据绑定单元测试错误解析数据绑定编译器选项失败。 PARAMS:

当我尝试为我的kotlin android项目设置单元测试时,遇到以下错误。 以前有没有遇到过这样的问题? 这已被标记为官方错误跟踪器的错误 失败:生成失败,出现异常。 * 什么地方出了错: 执行失败的任务':app:compileDebugUnitTestJavaWithJavac'。 > java.lang.RuntimeException:无法解析数据绑定编译器选项。 PARAMS: kapt.annotations:/Users/trevor/Dev/Android/workspace/gitlab-example/app/build/tmp/kapt/debugUnitTest/wrappers/annotations.debugUnitTest.txt kapt.kotlin.generated:/ Users / trevor / Dev / Android / workspace / gitlab-example / app / build / tmp / kapt / debugUnitTest / kotlinGenerated *尝试: 运行–info或–debug选项来获得更多的日志输出。 *例外是: org.gradle.api.tasks.TaskExecutionException:对于任务“:app:compileDebugUnitTestJavaWithJavac”,执行失败。 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:84) 在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:55) 在org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:62) 在org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58) 在org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88) 在org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:46) 在org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:51) 在org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54) 在org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43) 在org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34) 在org.gradle.execution.taskgraph.DefaultTaskGraphExeter $ $ EventFiringTaskWorker $ […]

单元测试验证通过被调用的功能

比方说,我有这个功能(写在Kotlin): fun determineBottomBarView(assignee: String?, showChatAssignerFunction: () -> Unit, showChatComposerFunction: () -> Unit, hideChatComposerAndAssignerFunction: () -> Unit) { if (assignee.isNullOrEmpty()) { showChatAssignerFunction() } else { if (assignee.equals(localRequestManager.getUsername())) { showChatComposerFunction() } else { hideChatComposerAndAssignerFunction() } } } 当受让人为空或空时,是否可以验证(在单元测试中) showChatAssignerFunction是否被调用? 谢谢你们!

简单的计算器,使用带Spek的KOTLIN进行单元测试(退出代码-1)

我对android开发很陌生,最近做了我的第一个项目。 这只是一个加法,减法,乘法和除法的基本计算器。 我现在试图做单元测试来测试我的计算器的功能,但我收到了这个输出(如下所示)。 我不知道是什么导致了这种情况发生。 请帮忙 输出: FunctionsTest.kt: @RunWith(JUnitPlatform::class) class FunctionsTest : Spek({ given("a calculator") { on("adding the first number to the second number") { val sum = Functions.addFunction(2.0, 3.0) it("should return the result of adding the first number to the second number") { assertEquals(5, sum) } } on("subtracting the second number from the first number") […]

不能在androidTest中使用Kotlin反向方法名称 – 描述符错误异常

在我的单元测试中,我使用Kotlin的反向方法来提高可读性,例如 @Test fun `Foo should return bar`() 它适用于<module>/src/test目录中的<module>/src/test ,但是当我尝试在<module>/src/androidTest执行相同的操作时,我得到一个异常: Error:java.lang.IllegalArgumentException: bad descriptor: Lcom/packageName/MainActivityTest$Foo should return bar$1; Error:Execution failed for task ':sample:transformClassesWithDexBuilderForDebugAndroidTest'. > com.android.build.api.transform.TransformException: org.gradle.tooling.BuildException: com.android.dx.cf.iface.ParseException: bad descriptor: Lcom/packageName/MainActivityTest$Foo should return bar$1; 有一些窍门,使其工作?

Kapt generatestubs – 不能用单元测试的内部构造函数初始化对象

假设我们有一个kotlin类定义为: package foo class Bar internal constructor() { //… } 当我尝试从一个测试方法,如: package foo class TestBar { @Test fun testingBar() { Bar() //<—– error } } 我收到以下错误: Cannot access '<init>': it is internal in 'Bar' Bar和TestBar都在同一个AndroidStudio模块中(android库)源代码的两个路径都是在gradle中定义的: … sourceSets { main.java.srcDirs += 'src/main/kotlin' test.java.srcDirs += 'src/test/kotlin' } … 测试似乎一般工作正常,但我无法创建任何与内部构造函数的对象。 我在用着: ext.kotlin_version = '1.1.3-2' 编辑 感谢您的反馈。 我决定从头开始制作简单的android多模块应用程序,它工作得很好。 然后,我试图摆脱我的模块依赖关系一个接一个,事实证明,问题是由dagger2 […]

Kotlin Spek中的组执行顺序是错误的

这是我的测试: object MySpek : Spek({ val myMock1: MyMock1 = mock() val myMock2: MyMock2 = mock() val handler = StartModeHandler(myMock1, myMock2) val session = mock<Session> { on { user }.doReturn(User.builder().withUserId("userId").build()) } describe("item exists for user") { beforeGroup { reset(digitalPointDao, trackDao) } whenever(myMock1.loadItem(session.user.userId)).thenReturn(Optional.of(MyItem())) whenever(myMock2.loadSomething()).thenReturn(ArrayList()) context("method onLaunch was called") { val response = handler.onLaunch(session) it("should return the response […]

在kotlin单元测试中如何赋值lateinit var

@RunWith(MockitoJUnitRunner::class) class RoundingTest { lateinit var rounding: (Double) -> Double @Before fun initValues(){ rounding(17.25) } @Test fun checkRounding() { rounding(17.25) var rounding = MyRoundingClass.roundValue(Myobject); Assert.assertEquals(17.23, rounding) } } object MyRoundingClass{ fun roundValue(myObject: MyObject): (Double) -> Double { return when (myObject.isrouding?.needed) { ROUND_DOWN -> { value -> roundDown(BigDecimal.valueOf(value)) } else -> // no rounding { value […]

未能在新的Android Kotlin项目上运行单元测试

我无法在Android Kotlin项目上运行单元测试。 我正在使用Android Studio 3。 为了确保我没有破坏任何东西,我创建了一个全新的Android Kotlin应用程序,并没有改变一件事情。 尝试运行ExampleUnitTest.kt(附带新项目)中的测试显示以下日志: 错误:Gradle:配置根项目“TestProject”时出现问题。 无法解析配置':classpath'的所有文件。 无法解析com.android.tools.build:gradle:3.0.0。 所需:项目:com.android.tools.build:gradle:3.0.0的缓存版本不可用于脱机模式。 没有com.android.tools.build:gradle:3.0.0的缓存版本可用于脱机模式。 无法解析org.jetbrains:注释:13.0。 需要:project:> org.jetbrains.kotlin:kotlin-gradle-plugin:1.1.51> org.jetbrains.kotlin:kotlin-stdlib:1.1.51没有org.jetbrains的缓存版本:annotations:13.0可用于离线模式。 没有org.jetbrains的缓存版本:annotations:13.0可用于离线模式。 这是我的build.gradle文件: 我能够运行该应用程序。 我试图清理项目,重建和所有的爵士乐,似乎没有任何工作。 谁能帮忙? UPDATE 去“首选项” – >“生成,执行,部署” – >“编译器”,并从“命令行选项”中删除–offline工作,但是,我想要使用–offline选项

嘲弄的对象仍在调用方法(Mockito + Kotlin)

我试图测试这个类: class LoginPresenter(val mPostman: Postman) : ContractLoginPresenter, Validator.ValidationListener { private var view: ContractLoginView? = null override fun setView(_view: BaseView) { view = _view as ContractLoginView } override fun getValidationListener(): Validator.ValidationListener { return this } override fun onValidationSucceeded() { view!!.getContext().showCircularProgressBar() mPostman.login(view!!.getUsername(), view!!.getPassword()) } 为此,我创建了这个测试类: @RunWith(PowerMockRunner::class) @PrepareForTest(App::class) class TestLoginPresenter { var mockedPostman = mock(Postman::class.java) var mockedComponent = […]

运行多个测试(Kotlin)时,只有第一个测试通过TestScheduler,

我试图在Kotlin中使用RxJava在MVP体系结构中测试我的演示者。 我已经创建了一个测试规则,用TestScheduler替换通常的调度程序来测试异步请求: class TestSchedulerRule : TestRule { val testScheduler = TestScheduler() override fun apply(base: Statement, d: Description): Statement { return object : Statement() { @Throws(Throwable::class) override fun evaluate() { RxJavaPlugins.setInitIoSchedulerHandler { testScheduler } RxJavaPlugins.setInitComputationSchedulerHandler { testScheduler } RxJavaPlugins.setInitNewThreadSchedulerHandler { testScheduler } RxJavaPlugins.setInitSingleSchedulerHandler { testScheduler } RxAndroidPlugins.setInitMainThreadSchedulerHandler { testScheduler } try { base.evaluate() } finally { […]