Tag: unit testing

如何在同一个文件中为Kotlin代码添加unittest并运行它?

我有这样的代码: class Solution { fun strStr(haystack: String, needle: String): Int { return haystack.indexOf(needle) } } 在Python中,通常我可以在同一个文件中添加一些测试,并添加如下内容: if __name__ == ‘__main__’: unittest.main() 运行unit testing。 我如何在Kotlin中实现同样的目标?

如何使用Gradle和Kotlin创建单独的测试?

我正在使用包含unit testing的Gradle开发Kotlin项目。 我想添加一些集成测试(或function测试,从来没有理解两者之间的差异),但我希望能够独立运行它们。 理想情况下,测试的来源在不同的文件夹中。 我正在使用Gradle 4.5,我的build.gradle文件看起来像这样: buildscript { ext.kotlin_version = ‘1.2.21’ repositories { mavenCentral() } dependencies { classpath “org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version” } } apply plugin: ‘kotlin’ apply plugin: ‘application’ mainClassName = ‘xyz.bobdudan.myproject.AppKt’ repositories { maven { url “http://maven.stardog.com” } mavenCentral() } dependencies { compile “org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version” testCompile ‘io.kotlintest:kotlintest:2.0.7’ } 我已经尝试了这里描述的方法为java,但它不起作用:任务也运行unit testing,但他们不能被发现,集成测试根本不执行。 我能做什么 ? 编辑: 下面是使用@ lance-java解决方案的gradle clean integTest的结果: […]

如何管理Kotlin中的unit testing资源,如启动/停止数据库连接或嵌入式弹性搜索服务器?

在我的Kotlin JUnit测试中,我想启动/停止嵌入式服务器,并在我的测试中使用它们。 我试过在我的测试类的方法上使用JUnit @Before注释,它工作正常,但它不是正确的行为,因为它运行每个测试用例,而不是一次。 因此,我想在一个方法上使用@BeforeClass注解,但将其添加到方法中会导致错误,说明它必须是静态方法。 Kotlin似乎没有静态的方法。 然后这同样适用于静态variables,因为我需要在测试用例中保留对嵌入式服务器的引用。 那么,如何为我的所有测试用例创建这个嵌入式数据库? 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 […]

函数参数和对象的Kotlinunit testing

在Kotlin中,我们可以将函数对象作为函数参数传入。 如何创建unit testing来测试函数对象逻辑? (例如下面的funcParam ) 如何对具有函数参数的函数进行unit testing? (例如下面的functionWithFuncParam ) – 即我可以创建一个模拟funcParam ? class MyClass1(val myObject: MyObject) { val funcParam = fun (num: Int): Int { return num * num } fun myFunctionOne() { myObject.functionWithFuncParam(funcParam) } } class MyObject () { fun functionWithFuncParam(funcParam: (Int) -> Int) { println(funcParam(32)) } }

kotlin mockk没有回答发现错误

嗨,我试图嘲笑从单一的观察得到的回应,从改装使用我的演示者类调用的委托人返回,我得到以下错误: io.mockk.MockKException:没有find答案:LoginPresenter(#1).login(LoginRequest(email=hello@gmail.com,password = password123)) 这是我的测试代码 @Test fun testKotlinMock(){ val presenter : LoginPresenter = mockk() val delegator = mockk() val viewCallback = mockk() val cookieStore = mockk() val loginRequest = LoginRequest(“hello@gmail.com”, “password123”) val customerResponse = CustomerResponse(“jon”, “richy”) every { delegator.login(loginRequest) } returns Single.just(Response.success(any())) every { delegator.getCustomer() } returns Single.just(customerResponse) every { presenter.loginViewCallBack } returns viewCallback every […]

unit testing使用kotlin协同程序的翻新调用

我正在使用kotlin协程和kotlin改进协程在我正在进行的项目中执行网络请求。 但我无法弄清楚如何让我的unit testing通过逻辑。 这是我的代码: class WorklistInteractor @Inject constructor(private val worklistRepository: WorklistRepository, private val preferenceManager: PreferenceManager) : NetworkInteractor, WorklistDialogContract.Interactor { private var job = Job() override fun getWorklist(listener: OnWorklistResultListener) { job = launch(UI) { val result = async { worklistRepository.getWorklist( ip = preferenceManager.worklistIp, port = preferenceManager.worklistPort).awaitResult() }.await() when (result) { //Successful HTTP result is Result.Ok -> […]

与Kotlin测试异步失败的Mockito

我正在尝试为我的测试学习Mockito,但使用Kotlin时则更加复杂。 我想在我的演示者中测试一个函数,当调用者从存储库异步获取对象列表并从侦听器触发Success / onError时。 之后,主持人根据回调告诉视图做任何事情。 以下是测试代码: @Mock lateinit var view: CategoriesActivityContract.View @Mock lateinit var repository: CategoriesRepository @Before fun setUp() { MockitoAnnotations.initMocks(this) } @Test fun shouldPassCategoriesToView2() { `doAnswer`({ it: InvocationOnMock? -> (it!!.arguments[0] as CategoriesRepository.OnGetCategoriesListener).onSuccess(DUMMY_CATEGORIES) null }).`when`(repository).getCategoriesAsync(any(CategoriesRepository.OnGetCategoriesListener::class.java)) val presenter: CategoriesActivityPresenter = CategoriesActivityPresenter(repository) presenter.bindView(view) presenter.loadCategories() `verify`(view).displayCategories(DUMMY_CATEGORIES) } 这是测试的代码: override fun loadCategories() { repository.getCategoriesAsync(object: CategoriesRepository.OnGetCategoriesListener { override fun onSuccess(categories: […]

我如何使用Kotlin运行单个Android测试?

我在unit testing中使用Kotlin 1.0.3进行Android开发,但是当我尝试运行单个测试时,它会运行所有类的测试。 有谁知道如何避免这种行为?

如何在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 / […]

ReferenceError:ok没有在Kotlin Javascript的QUnitAsserter.assertTrue中定义

Kotlin版本1.0.x-1.1.0支持使用QUnit的unit testing,但是当我加载测试时,会抛出这个exception: ReferenceError: ok is not defined at QUnitAsserter.assertTrue_4mavae$ (file:///D:/neoranga/Mis%20documentos/GitHub/FibonacciCounter/app/build/classes/test/lib/kotlin-test-js.js:50:5) at assertTrue (file:///D:/neoranga/Mis%20documentos/GitHub/FibonacciCounter/app/build/classes/test/lib/kotlin-test-js.js:93:27) at QUnitAsserter.assertTrue_o10pc4$ (file:///D:/neoranga/Mis%20documentos/GitHub/FibonacciCounter/app/build/classes/test/lib/kotlin-test-js.js:47:5) at QUnitAsserter.Asserter.assertEquals_lzc6tz$ (file:///D:/neoranga/Mis%20documentos/GitHub/FibonacciCounter/app/build/classes/test/lib/kotlin-test-js.js:182:10) at assertEquals (file:///D:/neoranga/Mis%20documentos/GitHub/FibonacciCounter/app/build/classes/test/lib/kotlin-test-js.js:108:20) at AppTest.myFirstTest (file:///D:/neoranga/Mis%20documentos/GitHub/FibonacciCounter/app/build/classes/test/app_test.js:17:5) at Object. (file:///D:/neoranga/Mis%20documentos/GitHub/FibonacciCounter/app/build/classes/test/app_test.js:29:21) 这是我的测试课: import org.junit.Test import kotlin.test.assertEquals class AppTest { @Test fun myFirstTest() { assertEquals(1, 1, “Test in test folder works”) } } 这是加载测试的html代码: Fibonacci Counter Placeholder