Truth.assertAbout and JavaSourceSubjectFactory.javaSource ()

I am writing an annotation processor and want to write some unit tests for it using google-compile-testingand truth:

So, I want to write a very simple unit test.

import static com.google.common.truth.Truth.assertAbout;
import static com.google.testing.compile.JavaSourceSubjectFactory.javaSource;

@Test
  public void componentOnConcreteClass() {
    JavaFileObject componentFile = JavaFileObjects.forSourceLines("test.NotAClass",
        "package test;",
        "",
        "import my.annotation.MyAnnotation;",
        "",
        "@MyAnnotation",
        "interface NotAComponent {}");
    assertAbout(javaSource()).that(componentFile)
        .processedWith(new MyProcessor())
        .failsToCompile()
        .withErrorContaining("interface");
  }

So basically I have a copy, inserted a simple test from google dagger2 repo and replaced the corresponding data with my annotation processor. I use maven and I use the same dependencies as dagger2:

        <dependency>
            <groupId>com.google.testing.compile</groupId>
            <artifactId>compile-testing</artifactId>
            <version>0.5</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.google.truth</groupId>
            <artifactId>truth</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>test</scope>
        </dependency>

But I can not compile the code. I think there is a problem with generic param parameters, but I can not understand what the problem is.

Compilation failure:
[ERROR] ProcessorTest.java:[46,5] method assertAbout in class com.google.common.truth.Truth cannot be applied to given types;
[ERROR] required: com.google.common.truth.SubjectFactory<S,T>
[ERROR] found: com.google.testing.compile.JavaSourceSubjectFactory
[ERROR] reason: no instance(s) of type variable(s) S,T exist so that argument type com.google.testing.compile.JavaSourceSubjectFactory conforms to formal parameter type com.google.common.truth.SubjectFactory<S,T>

Any hint what am I doing wrong? I can not find the difference in google dagger2 tests (which, by the way, compile on my machine)

+4
1

com.google.testing.compile:compile-testing:0.5 org.truth0:truth:0.15, . 0.6 compile-testing.

0

Source: https://habr.com/ru/post/1621526/


All Articles