name.falgout.jeffrey.testing:annotation-processor-testing-tests

An easier way to verify annotation processor diagnostics.

License

License

MIT License
GroupId

GroupId

name.falgout.jeffrey.testing
ArtifactId

ArtifactId

annotation-processor-testing-tests
Last Version

Last Version

0.2.0
Release Date

Release Date

Type

Type

jar
Description

Description

An easier way to verify annotation processor diagnostics.

Download annotation-processor-testing-tests

How to add to project

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

Dependencies

compile (1)

Group / Artifact Type Version
name.falgout.jeffrey.testing : annotation-processor-testing jar 0.2.0

Project Modules

There are no modules declared in this project.

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