2017-07-17 6 views
0

私はKotlin Spring Bootプロジェクトhereを持っています。 IntelliJからうまく動作するいくつかのテストがありますが、コマンドラインから実行すると、次のエラーで失敗します。私がこれまで試したどのようなKotlinテストはClassNotFoundExceptionでコマンドラインから失敗しますが、IntelliJから作業します

BUILD FAILED in 1m 12s 
7 actionable tasks: 7 executed 
asarkar:license-report-kotlin$ ./gradlew clean test 

> Task :compileKotlin 
Using kotlin incremental compilation 

> Task :compileTestKotlin 
Using kotlin incremental compilation 

> Task :test 

2017-07-16 21:43:06.345 INFO 2956 --- [  Thread-13] s.c.a.AnnotationConfigApplicationContext : Closing org.spring[email protected]54fa5525: startup date [Sun Jul 16 21:42:04 PDT 2017]; root of context hierarchy 
org.abhijitsarkar.ApplicationTest > testEndToEnd FAILED 
    java.lang.AssertionError at ApplicationTest.kt:83 

org.abhijitsarkar.service.GradleAgentTest > initializationError FAILED 
    java.lang.ClassNotFoundException 

org.abhijitsarkar.service.JGitAgentTest > initializationError FAILED 
    java.lang.ClassNotFoundException 

org.abhijitsarkar.service.LinkVerifierTest > initializationError FAILED 
    java.lang.ClassNotFoundException 

4 tests completed, 4 failed 


FAILURE: Build failed with an exception. 

  1. は前後にbuild.gradlebuild.gradle.ktsの間に行ってきました。
  2. jotにKotlinランタイムを追加しましたkotlinOptions.includeRuntime = true
  3. パッケージレベルの関数をオブジェクト内の関数に変更しました。私は奇妙見つけたもの

  1. outディレクトリは、通常のGradle buildディレクトリに加えて作成されます。
  2. 一部のクラス/オブジェクトは、末尾がKtのクラスファイルにコンパイルされます。私はこれについての韻や理由は見つけられませんでしたが、私はまだコトリンには新しいので、何かが欠けているかもしれません。

答えて

0

あなたのテスト(または実際にテストされたクラス)は何か変わったことがあります:テストクラスを含むbuildフォルダの内容を何とか削除します。あなたはすべてのテストを無効にし、ちょうど(ちょうどテストの目的のために)、以下を追加した場合、そこに

./gradlew clean testClasses 
find build # You get a full list of all main and test classes 
./gradlew clean testClasses test 
find build # You get a very limited list of resources in the build-folder (must be somehow modified by your code) 

:この、以下を試してみてくださいを参照してくださいするには

import io.kotlintest.matchers.* 
import io.kotlintest.specs.* 

class MyTests : StringSpec() { 
    init { 

    "length should return size of string" { 
     "hello".length shouldBe 5 
    } 

    } 
} 

ます場合は、再度のGradleテストしてください、

./gradlew clean testClasses test 
find build # all resources again available 

問題のテストを確認します。

+0

あなたはそうです。私のプロジェクトはリモートリポジトリをクローンしてからビルドしますが、その過程で 'build'ディレクトリの内容を何とか削除していました。 –

関連する問題