gpt4 book ai didi

scala - 将 Specs 与 unitils 一起使用

转载 作者:行者123 更新时间:2023-12-02 00:34:09 26 4
gpt4 key购买 nike

我正在尝试让 scala 规范和 unitils-dbunit 工作。

要使用 unitils,你必须注释你的使用 @RunWith(classOf[UnitilsJUnit4TestClassRunner]) 或测试类从一个类扩展,你可以设置数据集加载@DataSet(数组("DataSet.xml"))。所有这些都适用于 JUnit。

但是我在使用 specs 时遇到了 2 个问题:

  • 我正在使用 gradle 和 ScalaTestAntTask 运行我的规范测试,所以我想 @RunWith 注释将被忽略。
  • 我无法将 @DataSet 注释设置为我的测试方法在这里看到:

    [...]
    @RunWith(classOf[UnitilsJUnit4TestClassRunner])
    class DaoTest extends Specification with ScalaTest {

    @TestDataSource
    var dataSource: DataSource = null

    @DataSet(Array("DataSet.xml"))
    "querying the database" should {
    "return the right data" in {
    [assertSomething]
    }
    }
    }

这给了我以下编译器错误:

错误:定义的预期开始

“查询数据库”应该{

^

有人知道如何同时使用 specs 和 unitils 吗?

更新:这是我提出的解决方案:

    import org.specs.runner.ScalaTest
import org.specs.Specification
import org.unitils.dbunit.DbUnitModule
import java.io.File
import java.util.Properties
import org.unitils.core.ConfigurationLoader

class DaoTest extends Specification with ScalaTest {

"querying the database" should {

doBefore {
UnitilsDatabaseUtils.setup("DataSet.xml", "DataSet2.xml")
}

"return the right data" in {
[test something]
}
}
}

object UnitilsDatabaseUtils {

def setup(dataSetFileNames: String*) = {
val configuration: Properties = new ConfigurationLoader().loadConfiguration
val dbunitModule = new DbUnitModule
dbunitModule.init(configuration)

for (dataSetFileName <- dataSetFileNames) {
val dataSetURL = getClass.getClassLoader.getResource(dataSetFileName)
dbunitModule.insertDataSet(new File(dataSetURL.toURI))
}
}
}

-- 基督徒

最佳答案

DataSet 注释不能直接应用于 "xxx"should,因为这不是测试方法,只是常规的 scala 代码调用。

我无法为您提供完整的解决方案,但您需要做的是挖掘 unitils API 并使用 DataSetFactory直接加载您的数据。我认为您或多或少可以重用找到的代码 here .

然后,如果您需要在每个示例之前加载此数据集,只需使用 doBefore打电话。

关于scala - 将 Specs 与 unitils 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5352026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com