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.

The project can be used as a library and as a research/workbench codebase. Some areas are mature enough for automated tests, while others are intentionally marked as foundations or experiments.

Here a domain story telling overview

The DST is missing

Here the Link to the project itself

The YATestEnvironment project on GitHub

Status Legend

What It Provides

Available

In Progress

Experimental

Project Layout

Requirements

Build and Test

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

Artifact Test-Data Player

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

Generated Analysis Pipeline

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 is not automatic in this pipeline yet because it needs a concrete instance or static invocation target.

Documentation

License

YATestEnvironment is licensed under the MIT License.

Funding & Sponsorship

Principle

This is a free and open-source learning, research, and engineering project. Funding must not turn access to the software, core documentation, or reference implementations into a paid product.

Sponsorship is welcome when it helps make sustainable work possible. Its intended purpose is modest and practical: reasonable compensation for contributor time, development/test hardware, infrastructure, documentation, testing, security review, research, student/community work and unavoidable project expenses.

The core reference implementation must remain fully usable without proprietary software, paid APIs, subscriptions or commercial licences. Paid specialist tools may be used during development or validation, but must never become mandatory runtime dependencies.

What sponsorship does not buy

Funding does not entitle recipients to exclusive core features, ownership of community work, authority to weaken privacy/security requirements, hidden product placement, or control over technical decisions, merely because money was provided. Sponsors may fund work and participate in open technical discussion; architectural decisions remain subject to normal project review.

Transparency and proportionality

Where practical, material sponsorship should identify its purpose, such as infrastructure, hardware, contributor time, security review, documentation, or a defined research topic. The intention is cost and effort support, not profit maximization.

Suggested sponsor invitation

This project is developed as free and open-source software for learning, research and practical enterprise use. Contributions of code, documentation, testing and review are as valuable as financial support.

Sponsorship is optional. Where organizations or individuals choose to support the project financially, funds are intended primarily to cover project expenses and to give contributors some protected time for maintenance, research, documentation, testing, and implementation.

Sponsorship does not purchase exclusive features or control over the project. The reference implementation remains free, self-hostable, and accessible to students, researchers, individual developers, and organizations.

If the project's work is useful to you or your organization and you would like to help sustain it, modest sponsorship is welcome. Just as importantly, we welcome technical collaboration, review, teaching use, research cooperation, and contributions upstream to the open-source projects on which this middleware builds.

Collaboration before competition

The project prefers integration and upstream collaboration over rebuilding mature open-source infrastructure. Sponsored work may therefore include contributions to dependencies or joint work with their communities.

Features

YATestEnvironment is a Clojure and Java test automation environment. It combines reflection APIs, function metadata analysis, generated test-data pipelines, spying and mocking utilities, and early code-generation research.

Status Legend

Core Purpose

Available

Build and Runtime

Available

Java Test Annotations

Available

Java Reflection API

Available

Member and Type Inspection

Available

Annotation Utilities

Available

Reflection to Clojure Data

Available

Special Java Form Analysis

Available

In progress

Clojure Function Metadata and Active Data Support

Available

In progress

Clojure Function Spying

Available

Clojure Function Mocking

Available

Generated Test-Data Pipeline

Available

In progress

Configurable Generation

Available

Generated Payload Formats

Available

Artifact Test-Data Player

Available

In progress

Persistence

Available

In progress

Class Compilation and Code Generation

Available

In progress

Static Code Analysis

In progress

Python Inspection

In progress

Hygienic Macro Experimentation

Experimental

Examples and Test Fixtures

Available

Documentation

Available

Project Metadata

Available