Rob*_*key 5 java junit unit-testing annotation-processing kotlin
我有一个注释处理器库,我想为Kotlin工作,但是我在单元测试方面遇到了麻烦.如果有人能给我一些建议,我真的很感激.
我目前的单元测试实现使用了Google的编译测试库.我创建输入和输出类并将它们存储在资源目录中.然后在单元测试期间,编译测试库编译输入java类,执行注释处理器,然后将生成的类与资源目录中的预期输出类进行比较.
以下是我所指的示例(来自我的项目): 单元测试类 资源(输入和预期输出类
这对我目前所有基于java的单元测试都很有用.但是,当我尝试使用Kotlin类编写一些测试时,我的测试无法加载该类.
我相信这是因为编译测试库首先是Java特定的库(我没有在他们的项目中看到Kotlin的任何提及)
目前我收到以下问题:
java.lang.IllegalArgumentException: Compilation unit is not of SOURCE kind: "/C:/dev/gsonpath/gsonpath-compiler/build/resources/test/adapter/auto/field_types/primitives/valid/TestValidPrimitives.kt"
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:137)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:107)
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:64)
at com.google.testing.compile.Compilation.compile(Compilation.java:69)
at com.google.testing.compile.JavaSourcesSubject$CompilationClause.compilesWithoutError(JavaSourcesSubject.java:281)
Run Code Online (Sandbox Code Playgroud)
问题很明显,正在使用不正确的编译器.当我的文件扩展名不是'.java'时,抛出异常本身.如果我尝试使用'.java'文件扩展名加载Kotlin类,则它不起作用,因为它不是正确的Java语法.
有没有人遇到过这个问题并解决了它?我已经看过其他一些注释处理器(例如DBFlow),并且他们没有以这种方式编写单元测试.
由于Kotlin最近刚刚涉足注释处理,或许我是第一个遇到这个问题的人?