注意:MyTest的代碼已更新,以反映我發現的答案,這是由多個實現的assertEquals()在JUnit的生態系統中可用。JUnit似乎沒有調用我的重寫TestWatcher失敗/成功的方法
我在C中看到過類似的問題,但沒有回答/回覆。我已經在實現上左轉,或者忽略了簡單的事情。所以...
我希望看到控制檯上的「IT失敗」和「IT通過」,但沒有喜悅。只是「testFailure()」和「testSuccess()」輸出。
的TestRunner IMPL
import junit.runner.Version; // added to support version check
import org.junit.runner.JUnitCore;
public class TestRunner {
public static void main(String[] args) {
System.out.println(Version.id()); // added to check JUnit version
JUnitCore.runClasses(MyTest.class);
}
}
測試IMPL
// NO LONGER NEDED (v3 -v- v4) import junit.framework.TestCase;
import org.junit.Rule;
import org.junit.Test;
import ort.junit.Assert.assertEquals; // version that invokes TestWatcher
// public class MyTest extends TestCase { // JUnit v3.X semantics
public class MyTest { // JUnit v4.X semantics
@Rule
public MyTestWatcher myTestWatcher = new MyTestWatcher();
@Test
public void testFailure() {
System.out.println("testFailure()");
assertEquals("failure", true, false);
}
@Test
public void testSuccess() {
System.out.println("testSuccess()");
assertEquals("failure", true, true);
}
}
TestWatcher IMPL
import org.junit.rules.TestWatcher;
import org.junit.runner.Description;
public class MyTestWatcher extends TestWatcher {
public MyTestWatcher() {}
@Override
protected void failed(Throwable e, Description description) {
System.out.println("IT FAILED");
}
@Override
protected void succeeded(Description description) {
System.out.println("IT PASSED");
}
}
根據Javadoc,你沒有正確使用'TestWatcher':http://junit.org/junit4/javadoc/4.12/org/junit/rules/TestWatcher.html – Tunaki
我只是複製並粘貼,一切正常這裏。嘗試清理舊的jar文件並重建所有內容。 – Paulo
「你沒有正確使用TestWatcher的Javadoc ......」似乎是從「我只是複製和粘貼,一切工作正常......」180。 但是,至少我現在知道代碼應該產生預期的結果,並且可以專注於我的環境副代碼本身。 – SoCal