Tag: 测试

如何在Spek测试中使用依赖注入

我正在使用Kotlin,Spring和Spek实现简单的微服务。 我想测试我的存储库,但我不知道如何注入到测试案例的回购。 每个例子或教程基于创建新的参考,如下所示: object SampleTest : Spek({ describe("a calculator") { val calculator = SampleCalculator() it("should return the result of adding the first number to the second number") { val sum = calculator.sum(2, 4) assertEquals(6, sum) } it("should return the result of subtracting the second number from the first number") { val subtract = calculator.subtract(4, 2) […]

Rx-Kotlin awaitTerminalEvent永远不会完成

我想更好地了解如何使用Rx-Kotlin进行单元测试,但是我还没有能够成功地将主题设置为“完成”。 因此,我总是等待5秒的时间(onComplete应该立即),然后在assertComplete上失败。 我对awaitTerminalEvent的理解是,它应该只阻塞,直到onComplete被调用。 我也看了一下TestScheduler,但是我不认为应该在这里需要。 任何帮助或文件,可以带领我在正确的方向将不胜感激。 @Test fun testObservable() { val subject = BehaviorSubject.create<Int>() subject.onNext(0) TestSubscriber<Int>().apply { subject.subscribe({ System.out.println(it) subject.onNext(1) subject.onComplete() }) this.awaitTerminalEvent(5, TimeUnit.SECONDS) this.assertComplete() this.assertValue(1) } }

Kotlin – Mockito不能模拟/间谍(Spring REST API)

由于Kotlin中的所有课程都是默认的最终课程,所以Mockito不能窥探最后的课程: Cannot mock/spy class bye.persistence.jdbcTrial Mockito cannot mock/spy following: – final classes – anonymous classes – primitive types 而这个指南 (7月6日,丹尼·布鲁斯勒(Danny Preussler))说,一个框架是解决这个问题的必要条件。 现在我想知道,是否有可能测试一个REST API(使用Spring MockMvc)。 以下是我的测试代码: package byeTest.persistenceTest import bye.domain.User import bye.persistence.jdbcTrial import bye.spring.GreetingController import byeTest.persistenceTest.RestAPITest.RootConfig import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.BDDMockito.given import org.mockito.Mockito import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.http.MediaType import org.springframework.test.context.ContextConfiguration […]

Instrumentation测试无法在包含Kotlin文件的Android库模块中运行

这基本上是在标题中,我不能在包含Kotlin类的Android库模块中运行任何检测测试。 这与测试是否依赖Kotlin类无关。 这里是我可以重现这个问题的最简单的步骤: 使用默认设置创建一个新的Android库项目 只要检查,运行示例仪表测试,运行良好 添加一个Kotlin类 运行示例测试,仍然运行良好 再次添加一个全新的默认设置的Android库模块 运行示例仪器测试,工作正常 添加一个Kotlin文件,只包含一个class Something 尝试再次运行检测测试,现在构建失败,并显示以下消息: Error:Execution failed for task ':mylibrary:transformClassesWithDexForDebugAndroidTest'. > com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexException: Multiple dex files define Lco/zsmb/example/mylibrary/Something;

没有涵盖Kotlin方法的报道

在编译过程中,用inline关键字标记的Kotlin函数是内联的,似乎代码覆盖工具(如JaCoCo )无法正确计算代码覆盖率。 克服这个问题的常用方法是什么? 有没有办法让测试以某种方式避免内联步骤,并直接调用测试方法? 是否有可能跳过所有内联方法的报告生成(例如通过Gradle任务),而不排除整个类?

Android的测试在领域的kotlin

如何才能做一个简单的测试在Android的领域数据库在Kotlin实施测试? 我试图从github上的java realm test中将一个片段调整为kotlin,并得到下一个代码: import io.realm.Realm import io.realm.log.RealmLog import org.hamcrest.CoreMatchers import org.junit.Assert import org.junit.Test import org.junit.Before import org.junit.Rule import org.mockito.Mockito.`when` import org.powermock.api.mockito.PowerMockito import org.powermock.modules.junit4.rule.PowerMockRule class DBTest { @Rule var rule = PowerMockRule() lateinit internal var mockRealm: Realm @Before fun setup() { PowerMockito.mockStatic(RealmLog::class.java) PowerMockito.mockStatic(Realm::class.java) val mockRealm = PowerMockito.mock(Realm::class.java) `when`(Realm.getDefaultInstance()).thenReturn(mockRealm) this.mockRealm = mockRealm } @Test fun shouldBeAbleToGetDefaultInstance() […]

如何使用kotlin-test编写Kotlin单元测试?

我正在尝试使用Kotlin测试我的代码。 当试图导入kotlin.test包时,什么都不显示。 我必须先在某处添加依赖项吗? 我怎样才能运行我的单元测试?

在Kotlin中测试预期的例外

在Java中,程序员可以为JUnit测试用例指定预期的异常,例如: @Test(expected = ArithmeticException.class) public void omg() { int blackHole = 1 / 0; } 我如何在Kotlin做这个? 我已经尝试了两种语法变体,但都没有工作: import org.junit.Test as test // … test(expected = ArithmeticException) fun omg() Please specify constructor invocation; classifier 'ArithmeticException' does not have a companion object test(expected = ArithmeticException.class) fun omg() name expected ^ ^ expected ')'

Kotlin和新的ActivityTestRule:@规则必须公开

我正在尝试在Kotlin中为我的Android应用程序进行UI测试。 由于使用ActivityTestRule的新系统,我不能使它工作:编译正确,在运行时,我得到: java.lang.Exception: The @Rule 'mActivityRule' must be public. at org.junit.internal.runners.rules.RuleFieldValidator.addError(RuleFieldValidator.java:90) at org.junit.internal.runners.rules.RuleFieldValidator.validatePublic(RuleFieldValidator.java:67) at org.junit.internal.runners.rules.RuleFieldValidator.validateField(RuleFieldValidator.java:55) at org.junit.internal.runners.rules.RuleFieldValidator.validate(RuleFieldValidator.java:50) at org.junit.runners.BlockJUnit4ClassRunner.validateFields(BlockJUnit4ClassRunner.java:170) at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:103) at org.junit.runners.ParentRunner.validate(ParentRunner.java:344) at org.junit.runners.ParentRunner.<init>(ParentRunner.java:74) at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:55) at android.support.test.internal.runner.junit4.AndroidJUnit4ClassRunner.<init>(AndroidJUnit4ClassRunner.java:38) at android.support.test.runner.AndroidJUnit4.<init>(AndroidJUnit4.java:36) at java.lang.reflect.Constructor.constructNative(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:417) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.buildAndroidRunner(AndroidAnnotatedBuilder.java:57) at android.support.test.internal.runner.junit4.AndroidAnnotatedBuilder.runnerForClass(AndroidAnnotatedBuilder.java:45) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) at org.junit.runner.Computer.getRunner(Computer.java:38) at org.junit.runner.Computer$1.runnerForClass(Computer.java:29) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:98) at org.junit.runners.model.RunnerBuilder.runners(RunnerBuilder.java:84) at […]