test(config): 优化对 defaultInitializer 方法的单元测试.

将 defaultInitializer 方法的反射获取次数减少为一次, 并在测试结束后恢复访问权设置.
This commit is contained in:
LamGC 2022-05-04 22:36:35 +08:00
parent 27f54c3c36
commit 2389d082f4
Signed by: LamGC
GPG Key ID: 6C5AE2A913941E1D

View File

@ -64,16 +64,17 @@ internal class AppPathsTest {
@Test
fun `default initializer`(@TempDir testDir: File) {
val defaultInitializerMethod = Class.forName("net.lamgc.scalabot.AppConfigsKt")
.getDeclaredMethod("defaultInitializer", AppPaths::class.java)
.apply { isAccessible = true }
val dirPath = "${testDir.canonicalPath}/directory/"
val dirFile = File(dirPath)
mockk<AppPaths> {
every { file }.returns(File(dirPath))
every { path }.returns(dirPath)
every { initial() }.answers {
Class.forName("net.lamgc.scalabot.AppConfigsKt")
.getDeclaredMethod("defaultInitializer", AppPaths::class.java)
.apply { isAccessible = true }
.invoke(null, this@mockk)
defaultInitializerMethod.invoke(null, this@mockk)
}
}.initial()
assertTrue(dirFile.exists() && dirFile.isDirectory, "默认初始器未正常初始化【文件夹】.")
@ -83,10 +84,7 @@ internal class AppPathsTest {
every { file }.returns(this@apply)
every { path }.returns(this@apply.canonicalPath)
every { initial() }.answers {
Class.forName("net.lamgc.scalabot.AppConfigsKt")
.getDeclaredMethod("defaultInitializer", AppPaths::class.java)
.apply { isAccessible = true }
.invoke(null, this@mockk)
defaultInitializerMethod.invoke(null, this@mockk)
}
}.initial()
assertTrue(this@apply.exists() && this@apply.isFile, "默认初始器未正常初始化【文件】.")
@ -109,16 +107,15 @@ internal class AppPathsTest {
every { file }.returns(this@apply)
every { path }.returns(this@apply.canonicalPath)
every { initial() }.answers {
Class.forName("net.lamgc.scalabot.AppConfigsKt")
.getDeclaredMethod("defaultInitializer", AppPaths::class.java)
.apply { isAccessible = true }
.invoke(null, this@mockk)
defaultInitializerMethod.invoke(null, this@mockk)
}
}.initial()
verify(exactly = 0) { createNewFile() }
verify(exactly = 0) { mkdir() }
verify(exactly = 0) { mkdirs() }
}
defaultInitializerMethod.isAccessible = false
}
}