1
0

Disable tests without answers

This commit is contained in:
Hubert Van De Walle 2021-12-05 14:50:27 +01:00
parent 5c94aed258
commit 81a488aaee
2 changed files with 29 additions and 10 deletions

View File

@ -7,17 +7,40 @@ import org.assertj.core.api.Assertions
import org.junit.jupiter.api.AfterAll
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.TestInstance
import org.junit.jupiter.api.extension.ConditionEvaluationResult
import org.junit.jupiter.api.extension.ExecutionCondition
import org.junit.jupiter.api.extension.ExtendWith
import org.junit.jupiter.api.extension.ExtensionContext
class Condition : ExecutionCondition {
private val methods: Map<String, (BaseDayTest) -> Any?> = mapOf(
"part1 example result" to { it.part1Example },
"part1 result" to { it.part1Answer },
"part2 example result" to { it.part2Example },
"part2 result" to { it.part2Answer },
)
override fun evaluateExecutionCondition(context: ExtensionContext): ConditionEvaluationResult {
val methodName = context.testMethod.orElseGet { null }?.name
methods[methodName]?.let {
val instance = context.testInstance.get() as BaseDayTest
if (it(instance) == null) return ConditionEvaluationResult.disabled("")
}
return ConditionEvaluationResult.enabled("")
}
}
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@ExtendWith(Condition::class)
abstract class BaseDayTest(day: Int) {
abstract val example: String
abstract val part1Example: Any
abstract val part2Example: Any
abstract val part1Example: Any?
abstract val part1Answer: Any?
abstract val part1Answer: Any
abstract val part2Answer: Any
abstract val part2Example: Any?
abstract val part2Answer: Any?
private val ctx = lazy {
BeanContext.run()
@ -25,7 +48,6 @@ abstract class BaseDayTest(day: Int) {
val instance by lazy { ctx.value.getBean(ctx.value.findDayDefinition(day)) }
private val exampleCtx = lazy {
BeanContext.build()
.apply { registerExampleLoader(example) }
@ -39,9 +61,6 @@ abstract class BaseDayTest(day: Int) {
arrayOf(ctx, exampleCtx).filter { it.isInitialized() }.forEach { it.value.stop() }
}
private fun BeanContext.run(instance: Any, method: String) =
findExecutionHandle<Any, Any>(instance, method).get().invoke()
@Test
fun `part1 example result`() {
Assertions.assertThat(exampleInstance.part1()).isEqualTo(part1Example)

View File

@ -24,8 +24,8 @@ class Day04Test : BaseDayTest(4) {
""".trimIndent()
override val part1Example = 4512
override val part2Example = 1924
override val part1Answer = 87456
override val part2Example = 1924
override val part2Answer = 15561
}