mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 06:50:54 +07:00
User might want to have both class-level and test-level disposables. Currently, only test-level is supported by `@TestDisposable`. This fixture fits well in the current framework and provides an ability to control the life-cycle by choosing class or instance level field Merge-request: IJ-MR-139093 Merged-by: Ilya Kazakevich <ilya.kazakevich@jetbrains.com> GitOrigin-RevId: a40a12849cd46801b3589d3d772a5188e176180b
46 lines
2.0 KiB
Kotlin
46 lines
2.0 KiB
Kotlin
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
|
package com.intellij.testFramework.junit5.showcase
|
|
|
|
import com.intellij.openapi.util.CheckedDisposable
|
|
import com.intellij.openapi.util.Disposer
|
|
import com.intellij.testFramework.junit5.TestApplication
|
|
import com.intellij.testFramework.junit5.fixture.disposableFixture
|
|
import org.junit.jupiter.api.Assertions.assertFalse
|
|
import org.junit.jupiter.api.Assertions.assertTrue
|
|
import org.junit.jupiter.params.ParameterizedTest
|
|
import org.junit.jupiter.params.provider.ValueSource
|
|
|
|
@TestApplication
|
|
class JUnit5DisposableFixture {
|
|
companion object {
|
|
private const val DISPOSABLE_ID = "[engine:junit-jupiter]/[class:com.intellij.testFramework.junit5.showcase.JUnit5DisposableFixture]/[test-template:test()]"
|
|
|
|
private val classLevelDisposable = disposableFixture()
|
|
|
|
private var previousTestLevelDisposable: CheckedDisposable? = null
|
|
private var previousClassLevelDisposable: CheckedDisposable? = null
|
|
}
|
|
|
|
private val testLevelDisposable = disposableFixture()
|
|
|
|
|
|
@ParameterizedTest
|
|
@ValueSource(ints = [1, 2])
|
|
fun test() {
|
|
val disposableDebugString = testLevelDisposable.get().toString()
|
|
assertTrue(DISPOSABLE_ID in disposableDebugString,
|
|
"$DISPOSABLE_ID must be in $disposableDebugString")
|
|
previousTestLevelDisposable?.let {
|
|
assertTrue(it.isDisposed, "Test-level disposable from previous run must be disposed")
|
|
}
|
|
previousClassLevelDisposable?.let {
|
|
assertFalse(it.isDisposed, "Class-level disposable from previous run must NOT be disposed")
|
|
}
|
|
val classLevelDisposable = classLevelDisposable.get()
|
|
Disposer.register(classLevelDisposable, Disposer.newDisposable())
|
|
val testLevelDisposable = testLevelDisposable.get()
|
|
Disposer.register(testLevelDisposable, Disposer.newDisposable())
|
|
previousTestLevelDisposable = testLevelDisposable as CheckedDisposable
|
|
previousClassLevelDisposable = classLevelDisposable as CheckedDisposable
|
|
}
|
|
} |