2016-08-09 7 views
1

IntelliJでSpecs2を実行できません。 SBTタスクを介して同じテストを手動で実行すると問題なく正常に動作します。Specs2 IntelliJでネイティブにテストが実行されない

  • メッセージは:IntelliJの
  • "テストフレームワークが突然終了":v.15.0.5または2016.2 EAP(#IC-162.426.1ビルド)
  • プラットフォーム:スカラ2.11。 7、SBT 0.13.8、Specs2 2.4.17、Play! 2.3.10

これは一般的なエラーレスポンスですが、多くの人にとって根本的な原因が異なるようです。私は前にこの問題を解決し、build.sbtに以下を追加して、それを修正しています

fork in Test := false 
parallelExecution in Test := false 

今のテストが再び失敗しています。私はbuild.sbtファイルの改訂履歴を見てきましたが、私はそのような回帰を引き起こす重要なことに気付かず、手がかりはありません。ステップ-デバッグ、私は以下の根本的な原因を発見したクラッシュの際に

java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.specs2.reflect.Classes$class.createInstanceFor(Classes.scala:154) 
    at org.specs2.reflect.Classes$.createInstanceFor(Classes.scala:207) 
    at org.specs2.reflect.Classes$$anonfun$createInstanceOfEither$1.apply(Classes.scala:145) 
    at org.specs2.reflect.Classes$$anonfun$createInstanceOfEither$1.apply(Classes.scala:145) 
    at scala.Option.map(Option.scala:146) 
    at org.specs2.reflect.Classes$class.createInstanceOfEither(Classes.scala:145) 
    at org.specs2.reflect.Classes$.createInstanceOfEither(Classes.scala:207) 
    at org.specs2.reflect.Classes$class.org$specs2$reflect$Classes$$createInstanceForConstructor(Classes.scala:118) 
    at org.specs2.reflect.Classes$$anonfun$4.apply(Classes.scala:98) 
    at org.specs2.reflect.Classes$$anonfun$4.apply(Classes.scala:98) 
    at scala.collection.immutable.List.map(List.scala:273) 
    at org.specs2.reflect.Classes$class.tryToCreateObjectEither(Classes.scala:98) 
    at org.specs2.reflect.Classes$.tryToCreateObjectEither(Classes.scala:207) 
    at org.specs2.reflect.Classes$class.tryToCreateObject(Classes.scala:70) 
    at org.specs2.reflect.Classes$.tryToCreateObject(Classes.scala:207) 
    at org.specs2.specification.SpecificationStructure$.createSpecificationFromClassOrObject(BaseSpecification.scala:126) 
    at org.specs2.specification.SpecificationStructure$.createSpecificationOption(BaseSpecification.scala:107) 
    at org.specs2.specification.SpecificationStructure$.createSpecification(BaseSpecification.scala:95) 
    at org.specs2.runner.ClassRunner.createSpecification(ClassRunner.scala:60) 
    at org.specs2.runner.ClassRunner.start(ClassRunner.scala:31) 
    at org.specs2.runner.NotifierRunner.start(NotifierRunner.scala:25) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.runSpecs2_old(JavaSpecs2Runner.java:133) 
    at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.runSingleTest(JavaSpecs2Runner.java:204) 
    at org.jetbrains.plugins.scala.testingSupport.specs2.JavaSpecs2Runner.main(JavaSpecs2Runner.java:85) 
Caused by: java.lang.IncompatibleClassChangeError: Found class scalaz.Tree, but interface was expected 
    at org.specs2.mutable.SideEffectingCreationPaths$class.$init$(FragmentsBuilder.scala:245) 
    at org.specs2.mutable.Specification.<init>(Specification.scala:12) 
    at controllers.VerificationApiSpec.<init>(VerificationApiSpec.scala:26) 
    ... 32 more 

scalaz.Treeは、scalaz7.0.67.1.1を含むバージョン、7.1.27.1.3を要求し、私のプロジェクトの他の多くの依存関係の推移的依存関係です。興味深いことに、7.0.xscalaz.Treeは特性(Java言語のインタフェース)ですが、抽象クラス7.1.xであるため、根本的な原因となる可能性があります。

推移的な依存関係がscalaz 7.1.x7.0.xと明らかに互換性がないため、この問題を解決することは可能ですか?

答えて

3

Specs2 2.4.17はScalaz 7.1.0を使用します。あなたのビルドの他の依存関係はおそらくScalaz 7.2.xの依存関係を引きずっているでしょう。 specs2のバージョンを3.8.4にアップデートすると、より新しいバージョンのScalazが有効になります。

+0

私はあなたが正しいと思います。私はこれを反映するように質問を更新しました。私は3.8.4にアップグレードしようとしますが、そのような推移的な依存関係の競合を解決することは可能でしょうか? –

+0

あなたのプロジェクトはsbtで正常に動作しているので、Intellijのモジュール依存関係から間違ったjarを削除することをお勧めします。 – Eric

関連する問題