全部都跟 junit 4 不相容,是在想什麼?
JUnit 4 寫的測試,基本上說是有 org.junit.vintage 的 JAR 就可以跑了,至於程式碼就慢慢改或新專案再用了…
猜想是為了共存,所以做了兩套完全不一樣的
JUnit 5 想當共主,搞了個所謂的 JUnit Platform!
單就測試框架來說,JUnit 5 中應該是指 JUnit Jupiter 這塊。
JUnit Vintage 底層跑的,應該還是 JUnit 4,只不過多了層 JUnit Platform Engine,然後 JUnit Platform Launcher 透過 Engine 來跑 JUnit 4。
簡單來說,JUnit 4 還是 JUnit 4,只不過 JUnit 5 透過 JUnit Vintage 知道怎麼跑它。
如果有人想,可以實作一個 TestNG 的 [TestEngine1],然後 JUnit Platform Launcher 也可以透過 Engine 來跑 TestNG 了,寫程式時照樣使用 TestNG 的 API。
只是說,如果我用 JUnit 4、TestNG 還是爽爽的,那就繼續用就好了啊?幹嘛中間還多個 JUnit Platform?如果不想使用 JUnit Jupiter 的話,確實就是如此,就架構看來,JUnit Platform 主要是對 IDE、plugin、build tools 有利,不用每個測試框架做一套自己的工具。
當然,真的看完 JUnit Jupiter 而產生了愛的話, JUnit Platform 還是可以當 Migration 過程的平台(從 JUnit 4 到 JUnit Jupiter,或者是從 TestNG 到 JUnit Jupiter?)
目前的理解是這樣…