Ich wollte eine Klasse mit einem Annotationsprozessor mit junit testen, also habe ich zuerst Aptina Unit verwendet, aber aufgrund der Umstände von Erwachsenen musste ich Kompilierungstests verwenden, also habe ich vergessen, es zu verwenden. Es ist hier so geschrieben, dass es nicht existiert.
Kompiliertest Github https://github.com/google/compile-testing
(´-`) .. oO (Ich flirte, wenn ich Englisch sehe.)
Klicken Sie hier für andere Seiten, auf die verwiesen wird
http://blog.64p.org/entry/2015/03/26/055347
http://hisaichi5518.hatenablog.jp/entry/2017/09/21/213423
http://blog.duck8823.com/entry/2016/05/07/095947
(´-`) .. oO (sicheres Japanisch)
Schreiben Sie in pom.xml:
<dependency>
<groupId>com.google.testing.compile</groupId>
<artifactId>compile-testing</artifactId>
<version>0.12</version>
<scope>test</scope>
</dependency>
(´-`) .. oO (Ich möchte hier aufhören.)
Dies ist ein Beispieltestcode, der geschrieben wurde, um die vom Prozessor ausgegebene Quelle zu überprüfen.
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import javax.tools.JavaFileObject;
import org.junit.Test;
import com.google.common.io.Resources;
import com.google.testing.compile.Compilation;
import com.google.testing.compile.JavaFileObjects;
import static com.google.testing.compile.Compiler.javac;
import static com.google.common.truth.Truth.assert_;
import static com.google.testing.compile.JavaSourceSubjectFactory.javaSource;
public class MyProcessorTest {
@Test
public void test_Überprüfen Sie die Ausgabe des Prozessors(){
MyProcessor processor = new MyProcessor();
// assert
assert_().about(javaSource())
.that(JavaFileObjects.forResource(Resources.getResource("HelloWorld.java")))
.processedWith(processor)
.compilesWithoutError()
.and()
.generatesSources(JavaFileObjects.forSourceString("foo.bar.baz.Blah", "package foo.bar.baz;\n"
+ "\n"
+ "import java.lang.String;\n"
+ "import javax.annotation.Generated;\n"
+ "\n"
+ "@Generated({\"me.geso.sample.hello.MyProcessor\"})\n"
+ "public class Blah {\n"
+ " public String hello() {\n"
+ " return \"hello\";\n"
+ " }\n"
+ "}"));
}
}
Sie können sehen, dass foo.bar.baz.Blah die folgenden Parameter mit generatesSources ()
übereinstimmt.
Testen Sie, wann Sie nach Fehlern suchen möchten
@Test
public void test_process_Error() throws Exception {
File stub = new File(System.getProperty("user.dir") + "/src/test/java/jp/co/processor/MyProErrStub.java");
assert_().about(JavaSourceSubjectFactory.javaSource())
.that(JavaFileObjects.forResource(stub.toURI().toURL()))
.processedWith(new MyProcessor())
.failsToCompile();
}
Recommended Posts