スクリプトのフェーズで実行するカスタム テスト タイプをサポートするために、カスタム テスト タイプ クラス (extending GrailsTestTypeSupport) とカスタム テスト結果クラス (extending )を追加する Grails プラグインを作成しました。これをローカル マシンでテストしたところ、問題なく動作しましたが...GrailsTestTypeResultothertest-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
テストサイクルを開始するために、プラグインが提供するクラスをクラスパスに入れるのにこれほど多くのオーバーヘッドがあるのはおかしいと思われることを少し脇に置いておきます...どこでつまずいたのかよくわかりません。どんな助けや指針も大歓迎です。