YATestEnvironment is a mixed Clojure and Java test-engineering project. It brings together reflection utilities, generated test-data pipelines, function spying and mocking, annotation helpers, and early code-generation experiments for Java/Clojure test automation.
You can use the project as a library or as a research/workbench codebase. Some areas are mature enough for automated tests, while others are intentionally marked as foundations or experiments.
@YATest and test category enum.reflect.java.*, reflect.clojure.*, and newer reflect.code.java.* areas.src/main/clojure/io/github/hglabplh_tech/reflect: Clojure wrappers and data conversion around Java reflection and code generation.src/main/clojure/io/github/hglabplh_tech/test/suite: spying, mocking, generated test data, static analysis, and macro experiments.src/main/java/io/github/hglabplh_tech/reflect: Java reflection utility classes used by the Clojure API.src/main/java/io/github/hglabplh_tech/tests/framework/annots: custom Java test annotation support.src/main/java/io/github/hglabplh_tech/python: Java bridge for Python inspection.src/main/resources: XML schema and Python inspector resources.src/test/clojure and src/test/java: Clojure and Java fixtures plus tests.docs: testing-method and project design notes.refl_comp_gen: notes for reflection compilation and generation.project.clj.Run the Clojure test suite:
lein test
Run the combined alias for Clojure tests, Java test compilation, Codox, and Javadoc generation:
lein all-tests
Build source and javadoc classifiers through the configured Leiningen tasks:
lein jar
The artifact Player lives under:
io.github.hglabplh_tech.test.suite.datagen.artifact.player
Example:
(require '[io.github.hglabplh_tech.test.suite.datagen.artifact.player :as player])
(player/run!
{:defaults {:seed 42}
:storage {:type :file
:config {:base-dir "target/generated-test-artifacts"}}
:jobs [{:format :txt
:count 2
:hierarchy {:project "atlas"
:feature "document-import"
:subfeature "plain-text"}}
{:format :relational
:count 1
:hierarchy {:project "customer-service"
:class "CustomerRepository"
:method "findActiveCustomers"}}]})
A sample EDN configuration is available at:
src/test/resources/testdatagen/generator.edn
The generated test-data pipeline can analyze Clojure namespaces and Java classes, generate parameter samples, render payloads, and persist the result to SQLite:
(require '[io.github.hglabplh_tech.test.suite.datagen.pipeline :as pipeline])
(pipeline/analyze-files
{:namespaces ['some.project.ns]
:java-classes ["java.lang.String"]
:db-path "target/test-data/generated-test-data.sqlite"})
Java method execution isn't automatic in this pipeline yet because it needs a concrete instance or a static invocation target.
FEATURES.md: detailed feature inventory with completion status.docs/ClojureTestingFrame.md: Clojure testing, mocking, spying, and macro notes.docs/Test-Methods.md: testing-method overview.docs/TestingAgainstEntropy.md: entropy-oriented testing ideas.docs/ClojureDocu.md: Clojure documentation notes.refl_comp_gen/README.md: reflection compilation and generation notes.YATestEnvironment is licensed under the MIT License.