スクリプトのフェーズで実行するカスタム テスト タイプをサポートするために、カスタム テスト タイプ クラス (extending GrailsTestTypeSupport
) とカスタム テスト結果クラス (extending )を追加する Grails プラグインを作成しました。これをローカル マシンでテストしたところ、問題なく動作しましたが...GrailsTestTypeResult
other
test-app
アプリで使用するプラグインをパッケージ化すると、CI サーバー (Jenkins) でテストが異常終了します。Jenkinsが吐き出しているエラーは次のとおりです。
unable to resolve class CustomTestResult @ line 58, column 9.
new CustomTestResult(tests.size() - failed, failed)
import
これらのクラスを単純に に入れることはできないよう_Events.groovy
で、そうでなければクラスはクラスパスにありません。しかし、それらをクラスパスに入れる方法を理解できれば、私は気が遠くなります。これが私がこれまでに持っているものです(で_Events.groovy
):
import java.lang.reflect.Constructor
eventAllTestsStart = {
if (!otherTests) otherTests = []
loadCustomTestResult()
otherTests << createCustomTestType()
}
private def createCustomTestType(String name = 'js', String relativeSourcePath = 'js') {
ClassLoader parent = getClass().getClassLoader()
GroovyClassLoader loader = new GroovyClassLoader(parent)
Class customTestTypeClass = loader.parseClass(new File("${customTestPluginDir}/src/groovy/custom/test/CustomTestType.groovy"))
Constructor customTestTypeConstructor = customTestTypeClass.getConstructor(String, String)
def customTestType = customTestTypeConstructor.newInstance(name, relativeSourcePath)
customTestType
}
private def loadCustomTestResult() {
ClassLoader parent = getClass().getClassLoader()
GroovyClassLoader loader = new GroovyClassLoader(parent)
Class customTestResultClass = loader.parseClass(new File("${customTestPluginDir}/src/groovy/custom/test/CustomTestResult.groovy"))
}
現在:CustomTestResult
は 内からのみ参照されますCustomTestType
。私が知る限り、_Events.groovy
ロードしていますが、クラスパス上にないCustomTestType
と主張しているため、失敗しています。CustomTestResult
テストサイクルを開始するために、プラグインが提供するクラスをクラスパスに入れるのにこれほど多くのオーバーヘッドがあるのはおかしいと思われることを少し脇に置いておきます...どこでつまずいたのかよくわかりません。どんな助けや指針も大歓迎です。