Skip to content
Matthias Ngeo edited this page Mar 8, 2021 · 11 revisions

The Elementary project is a suite of libraries that simplify creating and unit testing annotation processors

  • Provides a real annotation processing environment rather than reimplementing javax.lang.model.*
  • Supports JUnit 5 while remaining unopinionated about which test assertion library is used
  • Composable Element and TypeMirror matching
  • Utilities to reduce boilerplate code while creating annotation processors

Elementary provides JUnit 5 extensions under the elementary artifact that simplifies unit testing annotation processors with an emphasis on the developer's quality of life. An actual javac instance is invoked to provide a real annotation processing environment rather than mocking/reimplementing javax.lang.model.* which is error-prone and buggy.

Please read using elementary to get started.

Satisfactory is a Element and TypeMirror matching library designed to be composable and fluent. It was created from our experience working on Chimera's typist project. The library strives to make Element and TypeMirror matching code less verbose and more readable.

Please read using satisfactory to get started.

Utilitary is a library that provides frequently used utilities to simplify implementation of annotation processors.

Please read using utilitary to get started.


Requires Java 11. Why Java 11?

CI/CD Funding Codecov Discord

Maven Repository

<repository>
  <id>elementary-releases</id>
  <url>https://repo.karuslabs.com/repository/elementary-releases/</url>
</repository>

Elementary - A suite of tools and JUnit extensions to test annotation processors and compilation

releases-maven snapshots-maven javadoc

"If I have seen further that others, it is by standing on the shoulder of giants"

This project is heavily inspired by Google's compile-testing project.

<!-- Requires JUnit 5.7.1 & above -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <version>5.7.1</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>com.karuslabs</groupId>
    <artifactId>elementary</artifactId>
    <version>1.0.0</version>
</dependency>

Satisfactory - A composable Element and TypeMirror matching library

releases-maven snapshots-maven javadoc

<dependency>
    <groupId>com.karuslabs</groupId>
    <artifactId>satisfactory</artifactId>
    <version>1.0.0</version>
</dependency>

Utilitary - Contains frequently used utilities to simplify implementation of annotation processors.

releases-maven snapshots-maven javadoc

<dependency>
    <groupId>com.karuslabs</groupId>
    <artifactId>satisfactory</artifactId>
    <version>1.0.0</version>
</dependency>
Clone this wiki locally