From 15c38734d4deece407a2f434b6c229dfe3ee7576 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Tue, 26 Jan 2021 19:30:36 +0100 Subject: [PATCH] add base class for JUnit 4.x tests GitOrigin-RevId: bcc6129dec68d228a0b200068ff9d4a7e489fecf --- .../LightJavaCodeInsightFixtureTestCase4.kt | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 java/testFramework/src/com/intellij/testFramework/fixtures/LightJavaCodeInsightFixtureTestCase4.kt diff --git a/java/testFramework/src/com/intellij/testFramework/fixtures/LightJavaCodeInsightFixtureTestCase4.kt b/java/testFramework/src/com/intellij/testFramework/fixtures/LightJavaCodeInsightFixtureTestCase4.kt new file mode 100644 index 000000000000..1cdd462038a1 --- /dev/null +++ b/java/testFramework/src/com/intellij/testFramework/fixtures/LightJavaCodeInsightFixtureTestCase4.kt @@ -0,0 +1,52 @@ +// Copyright 2000-2021 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package com.intellij.testFramework.fixtures + +import com.intellij.testFramework.EdtRule +import com.intellij.testFramework.LightProjectDescriptor +import org.junit.Rule +import org.junit.rules.ExternalResource +import org.junit.rules.RuleChain +import org.junit.rules.TestName +import org.junit.rules.TestRule + +abstract class LightJavaCodeInsightFixtureTestCase4( + projectDescriptor: LightProjectDescriptor? = null, + protected val testDataPath: String? = null +) { + + private val testNameRule = TestName() + + protected val testName: String + get() { + return testNameRule.methodName + .split(" ") + .joinToString(separator = "") { it.capitalize() } + .decapitalize() + } + + private val testCase = object : LightJavaCodeInsightFixtureTestCase() { + + override fun getProjectDescriptor(): LightProjectDescriptor = projectDescriptor ?: super.getProjectDescriptor() + + override fun getTestDataPath(): String = this@LightJavaCodeInsightFixtureTestCase4.testDataPath ?: super.getTestDataPath() + + public override fun setUp() = super.setUp() + + public override fun tearDown() = super.tearDown() + + val fixture: JavaCodeInsightTestFixture get() = myFixture + } + + private val fixtureRule = object : ExternalResource() { + + override fun before(): Unit = testCase.setUp() + + override fun after(): Unit = testCase.tearDown() + } + + protected val fixture: JavaCodeInsightTestFixture get() = testCase.fixture + + @Rule + @JvmField + val testRule: TestRule = RuleChain.outerRule(testNameRule).around(fixtureRule).around(EdtRule()) +}