-
-
Notifications
You must be signed in to change notification settings - Fork 6
Home
Elementary 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
andTypeMirror
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?
<repository>
<id>elementary-releases</id>
<url>https://repo.karuslabs.com/repository/elementary-releases/</url>
</repository>
"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>
<dependency>
<groupId>com.karuslabs</groupId>
<artifactId>satisfactory</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.karuslabs</groupId>
<artifactId>satisfactory</artifactId>
<version>1.0.0</version>
</dependency>