2016-07-12 7 views
1

私のテストスーツがどのように構成されているかは次のとおりです。 Scalatest内スカートが複数埋め込まれている場合、組込みkafkaは例外をスローします

"test payments" should { 
    "Add 100 credits" in { 
     runTeamTest { team => 
     withRunningKafka { 
      val addCreditsRequest = AddCreditsRequest(team.id.stringify, member1Email, 100) 
      TestCommon.makeRequestAndCheck(
      member1Email, 
      TeamApiGenerated.addCredits().url, 
      Helpers.POST, 
      Json.toJson(addCreditsRequest), 
      OK 
     ) 

      val foundTeam = TestCommon.waitForFuture(TeamDao.findOneById(team.id)) 
      foundTeam.get.credits mustEqual initialCreditAmount + 100 
     } 
     } 
    } 

    "deduct 100 credits" in { 
     runTeamTest { team => 
     withRunningKafka { 
      val deductCreditsRequest = DeductCreditsRequest(team.id.stringify, member1Email, 100) 
      TestCommon.makeRequestAndCheck(
      member1Email, 
      TeamApiGenerated.deductCredits().url, 
      Helpers.POST, 
      Json.toJson(deductCreditsRequest), 
      OK 
     ) 

      val foundTeam = TestCommon.waitForFuture(TeamDao.findOneById(team.id)) 
      foundTeam.get.credits mustEqual initialCreditAmount - 100 
     } 
     } 
    } 

、包括的なスーツ名は"test payments"で、最初のものが実行された後、その中に次の試験は、問題を抱えています。 2つのテストを個別に実行すると成功しますが、スーツ全体を実行すると最初のテストが成功し、2番目のテストではorg.apache.kafka.common.errors.UnknownTopicOrPartitionException: This server does not host this topic-partition.例外が返されます。上記のコードはテスト中のコントローラ内にコードを表示していませんが、コントローラ内では常にポーリングしているkafkaコンシューマがあり、close()はテスト内で呼び出されません。

答えて

3

beforeAllafterAllセクションには、コンパニオンオブジェクトメソッドEmbeddedKafka.start()EmbeddedKafka.stop()を使用することをお勧めします。このようにして、1つのテストクラスでKafkaを停止/開始しないようにすることもできます。

また、同じポートで同時に2つ以上のカフカのインスタンスを開始しようとしていないことを確認してください。

+0

停止コマンドを渡されたKafkaクラスタが実際に停止したかどうかを確認する方法はありますか。 @manub –

関連する問題