Ich habe eine Reihe von "Bibliothek" -Modulen in OCaml (hauptsächlich Dienstprogramm-und Hilfsfunktionen), wo ich die folgende Art von Code am Ende für triviale Unit-Tests hinzugefügt haben:mehrere "Hauptleitungen" in verknüpften OCaml-Modulen
let main() = ...
main
oder
let() = ...
Dieses Wesen Code, der in erster Linie druckt auf die Konsole (für einfache Testzwecke). Das Problem ist jetzt, dass wenn ich meine "Bibliothek" -Module mit meinem "Haupt" -Modul verknüpfe und das Programm ausführe, bekomme ich all diese ablenkenden Testnachrichten. Gibt es eine Möglichkeit, Code in ein OCaml-Modul einzubinden, das ausgeführt wird, wenn das Modul alleine verbunden ist (wodurch triviale Tests möglich sind), aber nicht, wenn es als "Bibliothek" verwendet wird? Ich habe Beiträge in SO gelesen, in denen OCaml keine Ahnung von einem "Haupt" -Modul hat und dass alle Module gleich sind, aber es scheint mir, dass die Reihenfolge der Objektdateien, die dem Linker gegeben werden, so interpretiert werden könnte Letztes Modul ist das "Haupt" (da es an der Spitze der "Abhängigkeits-Nahrungskette" steht).
In C sind Sie richtig, Sie müssten ein Test-Frontend verwenden, aber in Java ist es eine übliche Praxis für jede nicht-triviale Klasse, eine main() eine Art oberflächliches "Testen" zu haben - wenn Sie umziehen Ein Testframework, dass diese Art von Code aufgeräumt wird und keinem weiteren Zweck dient, aber während der anfänglichen aktiven Entwicklung hat diese Einrichtung ihren Nutzen. Ich weiß, dass du in OCaml den Toplevel hast, aber es ist nicht dasselbe. –
Kommentar: siehe Anhang – lambdapower