问题描述
我的测试用例使用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
方法。 run
比execute
好吗?
问题3)run
需要Args
,但我不知道如何实例化Args
。如何创建Args
?
问题4)如果有多个嵌套套件,每个套件都有多个测试,如果其中任何一个失败,execute
会停止吗? execute
返回Unit
。如何找出/哪个测试失败?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)