JUnit 4 runner for ignoring muted tests

This commit is contained in:
Nikolay Krasko
2020-01-16 12:59:58 +03:00
parent 6963c81b40
commit fd8ff463bb
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.test
import junit.framework.TestCase import junit.framework.TestCase
import org.junit.runner.Runner import org.junit.runner.Runner
import org.junit.runners.BlockJUnit4ClassRunner
import org.junit.runners.model.FrameworkMethod import org.junit.runners.model.FrameworkMethod
import org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters import org.junit.runners.parameterized.BlockJUnit4ClassRunnerWithParameters
import org.junit.runners.parameterized.ParametersRunnerFactory import org.junit.runners.parameterized.ParametersRunnerFactory
@@ -178,7 +179,7 @@ private fun mutedMessage(key: String) = "MUTED TEST: $key"
private fun testKey(klass: Class<*>, methodKey: String) = "${klass.canonicalName}.$methodKey" private fun testKey(klass: Class<*>, methodKey: String) = "${klass.canonicalName}.$methodKey"
private fun testKey(testCase: TestCase) = testKey(testCase::class.java, testCase.name) private fun testKey(testCase: TestCase) = testKey(testCase::class.java, testCase.name)
class RunnerFactoryWithMuteInDatabase: ParametersRunnerFactory { class RunnerFactoryWithMuteInDatabase : ParametersRunnerFactory {
override fun createRunnerForTestWithParameters(test: TestWithParameters?): Runner { override fun createRunnerForTestWithParameters(test: TestWithParameters?): Runner {
return object : BlockJUnit4ClassRunnerWithParameters(test) { return object : BlockJUnit4ClassRunnerWithParameters(test) {
override fun isIgnored(child: FrameworkMethod): Boolean { override fun isIgnored(child: FrameworkMethod): Boolean {
@@ -188,12 +189,26 @@ class RunnerFactoryWithMuteInDatabase: ParametersRunnerFactory {
} }
} }
fun isIgnoredInDatabaseWithLog(child: FrameworkMethod, parametersName: String): Boolean { class RunnerWithIgnoreInDatabase(klass: Class<*>?) : BlockJUnit4ClassRunner(klass) {
override fun isIgnored(child: FrameworkMethod): Boolean {
return super.isIgnored(child) || isIgnoredInDatabaseWithLog(child)
}
}
fun isIgnoredInDatabaseWithLog(child: FrameworkMethod): Boolean {
if (isMutedInDatabase(child.declaringClass, child.name)) { if (isMutedInDatabase(child.declaringClass, child.name)) {
System.err.println(mutedMessage(testKey(child.declaringClass, child.name))) System.err.println(mutedMessage(testKey(child.declaringClass, child.name)))
return true return true
} }
return false
}
fun isIgnoredInDatabaseWithLog(child: FrameworkMethod, parametersName: String): Boolean {
if (isIgnoredInDatabaseWithLog(child)) {
return true
}
val methodWithParametersKey = child.method.name + parametersName val methodWithParametersKey = child.method.name + parametersName
if (isMutedInDatabase(child.declaringClass, methodWithParametersKey)) { if (isMutedInDatabase(child.declaringClass, methodWithParametersKey)) {
System.err.println(mutedMessage(testKey(child.declaringClass, methodWithParametersKey))) System.err.println(mutedMessage(testKey(child.declaringClass, methodWithParametersKey)))