annotation-processor-testing

An easier way to verify annotation processor diagnostics.

License

License

GroupId

GroupId

name.falgout.jeffrey.testing
ArtifactId

ArtifactId

annotation-processor-testing-parent
Last Version

Last Version

0.2.0
Release Date

Release Date

Type

Type

pom
Description

Description

annotation-processor-testing
An easier way to verify annotation processor diagnostics.
Project URL

Project URL

https://github.com/JeffreyFalgout/annotation-processor-testing
Source Code Management

Source Code Management

https://github.com/JeffreyFalgout/annotation-processor-testing

Download annotation-processor-testing-parent

How to add to project

<!-- https://jarcasting.com/artifacts/name.falgout.jeffrey.testing/annotation-processor-testing-parent/ -->
<dependency>
    <groupId>name.falgout.jeffrey.testing</groupId>
    <artifactId>annotation-processor-testing-parent</artifactId>
    <version>0.2.0</version>
    <type>pom</type>
</dependency>
// https://jarcasting.com/artifacts/name.falgout.jeffrey.testing/annotation-processor-testing-parent/
implementation 'name.falgout.jeffrey.testing:annotation-processor-testing-parent:0.2.0'
// https://jarcasting.com/artifacts/name.falgout.jeffrey.testing/annotation-processor-testing-parent/
implementation ("name.falgout.jeffrey.testing:annotation-processor-testing-parent:0.2.0")
'name.falgout.jeffrey.testing:annotation-processor-testing-parent:pom:0.2.0'
<dependency org="name.falgout.jeffrey.testing" name="annotation-processor-testing-parent" rev="0.2.0">
  <artifact name="annotation-processor-testing-parent" type="pom" />
</dependency>
@Grapes(
@Grab(group='name.falgout.jeffrey.testing', module='annotation-processor-testing-parent', version='0.2.0')
)
libraryDependencies += "name.falgout.jeffrey.testing" % "annotation-processor-testing-parent" % "0.2.0"
[name.falgout.jeffrey.testing/annotation-processor-testing-parent "0.2.0"]

Dependencies

There are no dependencies for this project. It is a standalone project that does not depend on any other jars.

Project Modules

  • annotation-processor-testing
  • annotation-processor-testing-junit4
  • annotation-processor-testing-junit5
  • annotation-processor-testing-tests

annotation-processor-testing

An easy way to verify that your annotation processor is emitting the right diagnostics.

Setup

In order to use any of the test runners, you must include your test sources as a resource:

<build>
...
<testResources>
  <testResource>
    <directory>src/test/java/</directory>
  </testResource>
  <testResource>
    <directory>src/test/resources/</directory>
  </testResource>
</testResources>
...
</build>

Additionally, you may need to disable annotation processing during test compilation if you are testing ERROR diagnostics.

<build>
...
<plugins>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-compiler-plugin</artifactId>
 <executions>
   <execution>
     <id>default-testCompile</id>
     <goals>
       <goal>testCompile</goal>
     </goals>
     <configuration>
       <proc>none</proc>
     </configuration>
   </execution>
 </executions>
</plugins
...
</build>

Usage

Annotate your test class with @UseProcessor, @ExpectError, and @ExpectDiagnostic:

@UseProcessor(YourProcessor.class)
public class YourProcessorTest {
  @ExpectError @IncorrectlyUsedAnnotation
  public void method() {}

  @ExpectError("substring of the message") @IncorrectlyUsedAnnotation
  public void method1() {}

  @ExpectError(lineOffset = 1) // Expect a diagnostic on the next line.
  @IncorrectlyUsedAnnotation
  public void method2() {}

  @ExpectError(value = "[abc]+", regex = true) @IncorrectlyUsedAnnotation
  public void method3() {}

  @ExpectError(testName = "descriptive JUnit test name") @IncorrectlyUsedAnnotation
  public void method4() {}

  // No @Expect annotation needed.
  @CorrectlyUsedAnnotation
  public void method5() {}
}

JUnit 4

Maven Central

Add @RunWith(DiagnosticTester.class) to your test class.

JUnit 5

Maven Central

Ensure that annotation-processor-testing-junit5 is included as a dependency, and the JUnit 5 launcher should automatically discover your tests.

Versions

Version
0.2.0
0.1.0