在SCalatest中使用顺序时如何从执行中获取结果

时间:2020-09-18 06:53:20

标签: scalatest

我的测试用例使用Cassandra数据库。我不希望测试用例并行运行,以避免实例化多个数据库连接。因此,我启动数据库一次,然后将连接实例传递给每个测试。我正在使用Sequential中的Scalatest按顺序运行测试-http://doc.scalatest.org/3.0.1-2.12/org/scalatest/Sequential.html

class RepositorySpecs extends PlaySpec with BeforeAndAfterAll{

  val logger = LoggerFactory.getLogger(this.getClass.getName)
  val embeddedCassandraManager = new EmbeddedCassandraManager()
  override def afterAll():Unit = {
    logger.trace("closing connection afterAll")
    embeddedCassandraManager.closeCassandra()
  }

  "Repository Specs" should {
    "run all specs" in {

      val specs = Sequential(
        new AnswersRepositorySpecs(embeddedCassandraManager),
      new AnswersTransactionRepositorySpecs(embeddedCassandraManager),
      new CassandraRepositorySpecs(embeddedCassandraManager),
      new PartitionsOfATagRepositorySpecs(embeddedCassandraManager),
      new PasswordRepositorySpecs(embeddedCassandraManager),
      new PracticeQuestionsRepositorySpecs(embeddedCassandraManager),
      new PracticeQuestionsTagsRepositorySpecs(embeddedCassandraManager),
      new QuestionsAnsweredByAUserForATagSpecs(embeddedCassandraManager),
      new QuestionsCreatedByAUserForATagSpecs(embeddedCassandraManager),
      new SupportedTagsRepositorySpecs(embeddedCassandraManager),
      new UserProfileAndPortfolioRepositorySpecs(embeddedCassandraManager),
      new UsersRepositorySpecs(embeddedCassandraManager),
      new UserTokenRepositorySpecs(embeddedCassandraManager)
      )
      for(spec<-specs.nestedSuites){
        logger.trace(s"executing spec ${spec}")
        spec.execute()
      }


    }
  }
}

我是第一次使用Sequential

问题1)execute是运行测试的正确方法吗? 问题2)我还注意到了run方法。 runexecute好吗? 问题3)run需要Args,但我不知道如何实例化Args。如何创建Args? 问题4)如果有多个嵌套套件,每个套件都有多个测试,如果其中任何一个失败,execute会停止吗? execute返回Unit。如何找出/哪个测试失败?

0 个答案:

没有答案
相关问题