告别复杂配置!Kotlin Compile Testing让注解处理器调试变得如此简单
【免费下载链接】kotlin-compile-testingA library for testing Kotlin and Java annotation processors, compiler plugins and code generation项目地址: https://gitcode.com/gh_mirrors/ko/kotlin-compile-testing
Kotlin Compile Testing是一个专为测试Kotlin和Java注解处理器、编译器插件及代码生成而设计的强大库。它彻底简化了注解处理器的调试流程,让开发者无需复杂配置即可快速验证代码生成逻辑,显著提升开发效率。
🚀 核心功能:注解处理器调试的终极解决方案
一键集成,无需繁琐配置
Kotlin Compile Testing提供极简的API,只需几行代码即可完成注解处理器测试环境的搭建。通过KotlinCompilation类,开发者可以轻松配置编译源文件、处理器和输出选项,省去传统调试中手动设置编译路径、类路径的麻烦。
无缝支持KSP与KAPT
无论是Kotlin Symbol Processing (KSP)还是Kotlin Annotation Processing Tool (KAPT),该库都提供原生支持。通过symbolProcessorProviders属性,开发者可以直接注册自定义处理器,如Ksp.kt中所示:
val result = KotlinCompilation().apply { symbolProcessorProviders = listOf(processorProviderOf { env -> ClassGeneratingProcessor(env.codeGenerator, "generated", "A") }) }.compile()多阶段编译流程自动化
库内部实现了完整的编译生命周期管理,包括:
- 生成存根文件并运行注解处理器
- 编译Kotlin源文件
- 编译Java源文件
- 整合编译结果并提供类加载器
这一流程在KotlinCompilation.kt中通过compile()方法自动化执行,让开发者专注于逻辑验证而非构建流程。
💡 快速上手:5分钟实现注解处理器测试
步骤1:添加依赖
在项目的build.gradle中添加以下依赖:
testImplementation("com.github.tschuchortdev:kotlin-compile-testing:1.5.0") // 如需KSP支持 testImplementation("com.github.tschuchortdev:kotlin-compile-testing-ksp:1.5.0")步骤2:编写测试用例
创建测试类并使用KotlinCompilation配置测试环境:
class MyProcessorTest { @Test fun `test annotation processor generates correct code`() { // 1. 定义测试源文件 val source = SourceFile.kotlin("Test.kt", """ package com.example @MyAnnotation class MyClass """.trimIndent()) // 2. 配置编译环境 val compilation = KotlinCompilation().apply { sources = listOf(source) symbolProcessorProviders = listOf(MyProcessorProvider()) inheritClassPath = true verbose = true } // 3. 执行编译 val result = compilation.compile() // 4. 验证结果 assertThat(result.exitCode).isEqualTo(ExitCode.OK) assertThat(result.generatedFiles).anyMatch { it.name == "GeneratedFromMyAnnotation.kt" } } }步骤3:运行测试并调试
直接通过IDE运行测试,处理器的输出和编译日志会自动打印到控制台。通过设置断点,开发者可以在AbstractKotlinCompilation.kt的compileKotlin()方法中跟踪编译全过程。
🛠️ 高级特性:应对复杂测试场景
增量编译测试
库支持模拟增量编译场景,通过kspIncremental属性控制增量模式:
compilation.kspIncremental = true compilation.kspIncrementalLog = true // 启用详细日志多处理器协同测试
可同时注册多个处理器并验证它们的交互效果:
symbolProcessorProviders = listOf( processorProviderOf { env -> ProcessorA(env) }, processorProviderOf { env -> ProcessorB(env) } )自定义编译器选项
通过pluginOptions传递自定义编译器参数:
pluginOptions = listOf(PluginOption("my.plugin.id", "option.key", "value"))📚 项目结构与资源
核心实现位于以下模块:
- 编译核心:core/src/main/kotlin/com/tschuchort/compiletesting/
- KSP支持:ksp/src/main/kotlin/com/tschuchort/compiletesting/
测试示例可参考:
- KotlinCompilationTests.kt
- KspTest.kt
🌟 为什么选择Kotlin Compile Testing?
传统的注解处理器调试通常需要:
- 配置独立的编译模块
- 手动执行编译命令
- 解析生成的文件系统
而使用本库后,这些工作全部自动化,开发者可以:
- 在单元测试中直接验证处理器逻辑
- 快速迭代并即时查看结果
- 捕获编译过程中的异常和警告
无论是开发简单的注解处理器还是复杂的代码生成工具,Kotlin Compile Testing都能大幅降低调试门槛,让你专注于创造而非配置。
📥 开始使用
要开始使用Kotlin Compile Testing,只需克隆仓库并添加依赖:
git clone https://gitcode.com/gh_mirrors/ko/kotlin-compile-testing立即体验注解处理器开发的无缝流程,让复杂配置成为过去!
【免费下载链接】kotlin-compile-testingA library for testing Kotlin and Java annotation processors, compiler plugins and code generation项目地址: https://gitcode.com/gh_mirrors/ko/kotlin-compile-testing
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考