Tag: junit

如何在Java / Kotlin中包含Annotation Processor生成的代码来测试类路径

我有一个Android项目正在从Java迁移到Kotlin。 在这个项目中,我有一个纯Kotlin模块,在这里我使用下面的build.gradle实现一个API客户端: apply plugin: ‘kotlin’ apply plugin: ‘kotlin-kapt’ dependencies { implementation “org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}” implementation “com.squareup.retrofit2:retrofit:${retrofit_version}” implementation “com.squareup.retrofit2:converter-gson:${retrofit_version}” implementation “com.google.code.gson:gson:${gson_version}” implementation “com.squareup.okhttp3:logging-interceptor:${okhttp_version}” implementation “io.reactivex.rxjava2:rxjava:${rx_java_version}” implementation “io.reactivex.rxjava2:rxkotlin:${rx_kotlin_version}” implementation “com.jakewharton.retrofit:retrofit2-rxjava2-adapter:${retrofit2_rxjava2_adapter_version}” compileOnly “javax.annotation:jsr250-api:${jsr250_version}” implementation “com.google.dagger:dagger:${dagger_version}” kapt “com.google.dagger:dagger-compiler:${dagger_version}” testImplementation “junit:junit:${junit_version}” testImplementation “org.mockito:mockito-core:${mockito_version}” testImplementation “org.hamcrest:hamcrest-junit:${hamcrest_version}” testImplementation “com.squareup.okhttp3:mockwebserver:${mockwebserver_version}” // Dependence injection kaptTest “com.google.dagger:dagger-compiler:${dagger_version}” } unit testing有一个Annotation Processor依赖关系: kaptTest “com.google.dagger:dagger-compiler:${dagger_version}” 我可以在build / generated / […]

Kotlin为assertThat(foo,instanceOf(Bar.class))

你将如何用Kotlin编写assertThat(foo, instanceOf(Bar.class)) ? 似乎它不喜欢.class 如果可能的话,我想去找一个比assertTrue(foo is Bar)更“精确”的断言

Intellij没有测试发现Kotlin

我正在尝试通过Intellij Idea Ultimate 2017.2中的Kotlin Koans进行工作,并且遇到了运行测试的问题。 我已经将测试目录标记为这样,但是当我尝试将它们作为整体或个别地使用Intellij添加到测试中的排水沟中的三角形箭头运行时,我得到“没有find测试”错误。 截图附上。

Android w / Kotlin纯java-Junit的NoClassDefFoundError解决方法不起作用

存储库,可靠地重现错误:爆炸/ bug-kotlin-junit 我的Android应用程序由一个应用程序模块和4个库模块组成。 我的测试是用纯Java编写的。 不碰Kotlin代码的测试运行得很好,但是当我运行使用( MyKotlinObj::methodRef )或new MyKotlinObj() )的测试时,我的测试将失败,出现以下错误: java.lang.NoClassDefFoundError: com/explod/api/UserCreated at com.explod.api.Bug.initUserCreated_shouldNotTriggerNoClassDefFoundError(Bug.java:19) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51) at […]

在一个Android项目中,Jacoco报告了Kotlin类的unit testing覆盖率

我正在使用Android Gradle插件3.0.0。 我正在将一个Android应用程序从java移植到kotlin。 我的应用程序在Java和Kotlin中有类,测试用Java。 我运行./gradlew clean jacocoTestReport 。 这运行unit testing( src/test )和仪器测试( src/androidTest )。 jacoco在app/build/reports/jacoco/jacocoTestReport/html/index.html中生成的报告没有显示确实被unit testing覆盖的Kotlin类的覆盖率。 报告确实显示了仪器测试的覆盖范围。 注:我遇到了这些其他问题,这是不完全相同的问题: JaCoCo返回0%Kotlin和Android 3.0的覆盖率在仪器测试代码覆盖率方面存在问题,而不是unit testing。 Android Studio JaCoCo报告0%的覆盖率在Android Studio内部存在代码覆盖率方面的问题,但不是Kotlin特有的。 我的应用程序模块的build.gradle的相关部分: apply plugin: ‘jacoco’ apply plugin: ‘kotlin-android’ apply plugin: ‘kotlin-kapt’ … android { defaultConfig { sourceSets { main.java.srcDirs += “$projectDir/src/main/kotlin” } } testOptions { unitTests { all { jvmArgs ‘-noverify’, […]

用@category注释运行Kotlin编写的junit测试

我有一个问题。 是否可以通过@Category注释在Kotlin中编写的Junit测试,并在界面名称中使用空格? 我想要这样的东西: @Test @Category(`Kotlin interface`::class) fun `Test with spaces`() { 现在我收到一个例外

Kotlin中@BeforeAll的正确解决方法是什么?

目前JUNIT5 API只允许@BeforeAll在静态的方法上 所以如果这样做,这将不会编译: @BeforeAll fun setup() { MockitoAnnotations.initMocks(this) mvc = MockMvcBuilders.standaloneSetup(controller).build() } 所以为了在Kotlin中有静态的方法,我必须把这样的伴侣对象放进去: companion object { @JvmStatic @BeforeAll fun setup() { MockitoAnnotations.initMocks(this) mvc = MockMvcBuilders.standaloneSetup(smsController).build() } } 这将编译,但我没有访问父类的变量。 那么用Kotlin调用JUnit5的@BeforeAll会是怎样的习惯用法呢?

JMockit能和scala一起工作吗?

我GOOGLE了一点,在我看来,这是可能的。 但是当我尝试这样的: class Calc { def sum(first: Int, second: Int) = { first + second } } 和“考”类: class CalcTest { @Test def testSum(@Mocked test: Calc) { new NonStrictExpectations() {{ test.sum(2, 3) times = 1 result = Int.box(5) }} Assert.assertEquals(5, test.sum(2, 3)) } } 我有一个例外: java.lang.IllegalAccessError:试图从com.kvg.client.CalcTest类访问类mockit.Invocations $$ com.vg.client.CalcTest $$ anon $ 1。(CalcTest.scala:11)at com.kvg .client.CalcTest.testSum(CalcTest.scala:9)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native […]

Android JUnit测试SQLiteOpenHelper

我是junit测试的新手。 任何人都可以帮助我,如何测试我的SQLiteOpenHelper类。 意味着我必须实现什么类,以及如何测试我的数据库和表。 我正在使用Eclipse IDE。

如何管理Kotlin中的单元测试资源,如启动/停止数据库连接或嵌入式elasticsearch服务器?

在我的Kotlin JUnit测试中,我想启动/停止嵌入式服务器,并在我的测试中使用它们。 我试着在我的测试类的方法上使用JUnit @Before注释,它工作正常,但它不是正确的行为,因为它运行每个测试用例,而不是一次。 因此,我想在一个方法上使用@BeforeClass注解,但是将其添加到方法中会导致错误,说明它必须是静态方法。 Kotlin似乎没有静态的方法。 然后这同样适用于静态变量,因为我需要在测试用例中保留对嵌入式服务器的引用。 那么,如何为我的所有测试用例创建这个嵌入式数据库? class MyTest { @Before fun setup() { // works in that it opens the database connection, but is wrong // since this is per test case instead of being shared for all } @BeforeClass fun setupClass() { // what I want to do instead, but results in […]