1

私は sbt マルチプロジェクト セットアップを持っています。プロジェクト構造は次のようなものです。

プロジェクトの親
|
|-- クライアント
|
|-- サーバー

親プロジェクトは仮想プロジェクトです。project/MyBuild.scala ファイルは次のようなものです

  import sbt._
  import Keys._
  object MyBuild extends Build {
      lazy val root = Project(id = "parent", base = file(".")) aggregate(server, client)
      lazy val server = Project(id = "server", base = file("server"))
      lazy val client = Project(id = "client", base = file("client")) dependsOn( server )
  }

クライアントとサーバーは、testng テスト セットアップを備えた 2 つの独立したプロジェクトであり、すべて独立して動作しています。

testng を実行するために、testng インターフェイス プラグイン「sbt-testng-plugin」を使用しています。このプラグインには、testng テスト スイートの構成 xml を指定する必要があります。

クライアントとサーバーの両方のbuild.sbtファイルで、指定しました

testNGSuites := Seq(  "src/test/resources/testng.xml")

testng が testng.xml を見つけてテストを実行できるようにします。

親プロジェクトで、入力すると

sbt コンパイル

すべてのサブ プロジェクト (クライアントとサーバー) を個別にコンパイルします。これはうまくいきます。

しかし、私が入力すると、

sbt テスト

親プロジェクト sbt は testng テストを実行しようとしますが、ファイルが見つからないため失敗します

 src/test/resources/testng.xml 

親プロジェクトで。親は単なる仮想ディレクトリであり、持っていないため

 src/test/resources/testng.xml 

したがって、テストは失敗します。

ここで私の質問は、サブプロジェクトと親プロジェクトがテストを実行できるように設定を構成するにはどうすればよいですか?

サブプロジェクトでこのような設定をどうにかして設定できればと考えていました

 testNGSuites := Seq( base +  "src/test/resources/testng.xml")

そのため、testNGSuites は親プロジェクトではなくサブプロジェクトに対して絶対的です。

しかし、私は sbt を使い始めたばかりなので、sbt で「ベース」パスを取得する方法がわかりません。

baseDirectoryで試してみましたが、値そのものではなく設定キーです。

どんな助けでも感謝します。

ありがとう

4

0 に答える 0