在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。如何找出/哪个测试失败?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)