2017-10-26 5 views
1

Zum Beispiel haben wir die @RepeatedTest:Die @RepeatedTest startet nicht

import org.junit.jupiter.api.RepeatedTest; 
import static org.junit.jupiter.api.Assertions.assertEquals; 

class SomeClassTest { 
    @RepeatedTest(3) 
    public void doSmth() { 
     String str = "hello"; 
     SomeClass someClass = new SomeClass(); 
     assertEquals(str.substring(0, 2), someClass.doSmth(str)); 
    } 
} 

Es funktioniert gut, bis wir werden versuchen, aus dem Test Suite wie folgt auszuführen:

import org.junit.platform.runner.JUnitPlatform; 
import org.junit.platform.suite.api.SelectClasses; 
import org.junit.runner.RunWith; 

@RunWith(JUnitPlatform.class) 
@SelectClasses({ 
     SomeClassTest.class 
}) 
public class TestSuite { 
} 

SomeClass

public class SomeClass { 
    public String doSmth(String str){ 
     return str.length() > 3? str.substring(0,2) : str; 
    } 
} 

Keine Fehler in der Konsole. Der Test startet einfach nicht. Warum?

problem


aktualisieren

I aktiviert in SomeClass anmelden.

public class SomeClass { 
    private final static Logger log = LoggerFactory.getLogger(SomeClass.class.getName()); 
    public String doSmth(String str){ 
     log.info("in doSmth"); 
     return str.length() > 3? str.substring(0,2) : str; 
    } 
} 

Jetzt sehe ich in der log-Datei, dass @RepeatedTest aus der Test-Suite-3-mal aufgerufen wurde. Aber was passiert später mit dem Test? Warum fällt es?

Kann mir jemand sagen, ob es eine Möglichkeit gibt, die Arbeit der JUnit zu protokollieren?

+0

Welche Version von IntelliJ verwenden Sie? –

+1

Ihr Code funktioniert gut für mich in Eclipse Oxygen 4.7.1a. Es ist also nichts falsch mit dem Setup oder JUnit Jupiter. Daher ist es wahrscheinlich ein Problem mit der von Ihnen verwendeten Version von IntelliJ. –

+0

@SamBrannen danke für die Aufklärung! Ich benutze 'IntelliJ IDEA 2017.2.5 Build # IU-172.4343.14, gebaut am 26. September 2017' mit 'JRE: 1.8.0_152-release-915-b12 amd64; JVM: OpenJDK 64-Bit Server VM von JetBrains sro' – Woland

Antwort

0

können Sie melden die wiederholten Testausführungsdetails mit dem folgenden Stummel in Ihrer SomeClassTest Klasse: -

private Logger log = Logger.getLogger(SomeTest.class.getName()); 

@BeforeEach 
void beforeEach(TestInfo testInfo, RepetitionInfo repetitionInfo) { 
    log.info(String.format("About to execute repetition %d of %d for %s", 
       repetitionInfo.getCurrentRepetition(), 
       repetitionInfo.getTotalRepetitions(), 
       testInfo.getTestMethod().get().getName())); 
} 

Auch mit der aktuellen Logik, ich habe keinen Grund, warum der Test würde FAIL oder sonst sehen Sie können auf einen Assertionsfehler stoßen, den Sie für Fehlerfälle benötigen.

+1

Danke, aber ich meine interne Arbeit von JUnit protokollieren. Zum Beispiel, wenn ich Hibernate Arbeit protokollieren möchte, füge ich in 'logback.xml' eine Zeile ein -' '. _ "Ich sehe keinen Grund, warum der Test fehlschlagen würde" - ich auch. Aber es scheitert. Führen Sie den Code selbst aus und Sie werden sehen. – Woland