2017-11-27 1 views
1

Ich versuche, das Verhalten eines Loggers mit JUnit und SLF4J Test zu testen, die ist "eine Test-Implementierung von SLF4J, die Protokollnachrichten im Speicher speichert und Methoden zum Abrufen bietet sie ".In Gradle, auszuschließen transitive Abhängigkeit von allen Abhängigkeiten außer einem

Aus dem SLF4J Test-docs:

SLF4J-Test sollte die einzige SLF4J Implementierung auf dem Test Classpath

ich einige Abhängigkeiten, die SLF4J als transitive Abhängigkeit haben. Ich versuche, SLF4J von allen Abhängigkeiten in meiner Testkonfiguration auszuschließen, aber ich brauche es immer noch für SLF4J Test.

Ich kann SLF4J von allem mit dem untenstehenden Code ausschließen, aber das schließt es natürlich auch vom SLF4J Test aus, wo ich es brauche.

configurations { 
    testCompile.exclude group: "org.slf4j" 
} 

Als SLF4J ist eine transitive Abhängigkeit von vielen meiner anderen Abhängigkeiten, einschließlich Spring Stiefel, es nicht praktikabel ist (oder möglich?) Bis hin zu gehen und individuell aus allen von ihnen auszuschließen.

Gibt es eine (relativ schmerzlose) Möglichkeit, eine transitive Abhängigkeit von allen Abhängigkeiten auszuschließen, außer der, die sie braucht?

Antwort

0

SLF4J Testanleitung besagt, dass Sie nur eine SLF4J Implementierung auf Ihrem Test Classpath haben sollten. Das bedeutet, dass Sie die slf4j-test-Abhängigkeit hinzufügen und andere (wie logback, log4j usw.) nur im aktuellen Projekt ausschließen sollten.

Zum Beispiel Frühlings-Boot verwendet Logback standardmäßig ist hier Snippet gradle Skript beschreibt, wie slf4j-test verwenden:

configurations.testCompile { 
    exclude group: 'ch.qos.logback', module: 'logback-classic' 
} 

dependencies { 
    compile(group: 'org.springframework.boot', name: 'spring-boot-starter') 
    ... 

    testCompile(group: 'org.springframework.boot', name: 'spring-boot-starter-test') 
    testCompile(group: 'uk.org.lidalia', name: 'slf4j-test', version: '1.2.0') 
} 
Verwandte Themen