Build project codecov pre-commit

Пропуск вызова метода в тестах

Задача

Сделать исключение вызова конкретных методов (в коде) и заменить их значением по-умолчанию. Используется для исключения вызова методов при запуске тестов на разных окружениях.

Подключение

Maven

<dependency>
  <groupId>ru.romanow.skip.method</groupId>
  <artifactId>skip-method</artifactId>
  <version>${skip-method.version}</version>
</dependency>

Gradle

testImplementation "ru.romanow.skip.method:skip-method:$skipMethodVersion"

Конфигурация

Настроить поддержку AspectJ в gradle:

configurations {
    aspectjWeaverAgent
}

dependencies {
    aspectjWeaverAgent "org.aspectj:aspectjweaver:$aspectjVersion"
    testImplementation "org.aspectj:aspectjrt:$aspectjVersion"
}

test {
    useJUnitPlatform()
    systemProperty "skipOn", findProperty("skipOn")

    doFirst {
        jvmArgs "--add-opens",
                "java.base/java.lang=ALL-UNNAMED",
                "-javaagent:${configurations.aspectjWeaverAgent.singleFile}"
    }
}

В META-INF/aop.xml создать описание используемых аспектов.

Использование

@SkipMethod(skipOn = [DEV, PROD], valueProvider = IntegerProvider::class)
fun skipOnAll(): Int {
    return 100
}

class IntegerProvider : ObjectProvider<Int> {
    override fun generate(): Int {
        return 10
    }
}

Запуск

$ ./gradlew clean build -PskipOn=DEV