Created
March 18, 2026 14:49
-
-
Save henryw374/9ad2c453bf02dfc5194ebe9c4b5c43ac to your computer and use it in GitHub Desktop.
run junit from clojure
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (ns junit | |
| "could see as a modern replacement for lein-junit, which afaik does junit 4 at most. | |
| find and run some junit tests from clojure. | |
| deps required are junit-jupiter, junit-jupiter-engine, junit-platform-launcher and junit-platform-reporting | |
| " | |
| (:require [clojure.java.io :as io]) | |
| (:import (java.nio.file Paths) | |
| (org.junit.platform.engine.discovery DiscoverySelectors) | |
| (org.junit.platform.launcher LauncherDiscoveryRequest TestExecutionListener) | |
| (org.junit.platform.launcher.core Launcher DiscoveryRequestBuilder LauncherFactory) | |
| (org.junit.platform.launcher.listeners LoggingListener SummaryGeneratingListener) | |
| . | |
| (org.junit.platform.reporting.legacy.xml LegacyXmlReportGeneratingListener))) | |
| (defn run-junit | |
| "package arg is a string, which can be the first part of a package name. | |
| so, 'com' would work, if you had packages starting 'com.widdindustries....'" | |
| [package] | |
| (let [discovery (-> (Launcher DiscoveryRequestBuilder/discoveryRequest) | |
| (.selectors | |
| [(DiscoverySelectors/selectPackage package)]) | |
| (.build)) | |
| launcher (-> (LauncherFactory/openSession) | |
| (.getLauncher))] | |
| (with-open [writer (PrintWriter-on (fn [s]) (fn []))] | |
| (let [test-plan (.discover launcher discovery)] | |
| (.execute launcher test-plan (into-array TestExecutionListener | |
| (LegacyXmlReportGeneratingListener. | |
| (Paths/get (.toURI (io/file "test-results"))) | |
| writer))))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment