我正试图让scala规范和unitils-dbunit发挥作用。
要使用unitils,必须用@RunWith(classOfUnitilsJUnit4TestClassRunner)注释测试类,或者从类中扩展,并且可以将DataSet的加载设置为使用@DataSet(“DataSet.xml”)。所有这些都适用于JUnit。
但是我在使用规范时遇到了两个问题:
这给出了以下编译器错误:
错误:定义的预期开始
“查询数据库”应{
^
有人知道我怎么能把规格和单元组放在一起吗?
更新:--这是我想出的解决方案:
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))
}
}
}-基督教
发布于 2011-03-20 23:39:43
DataSet注释不能直接应用于"xxx" should,因为这不是一个测试方法,只是一个常规的scala代码调用。
我不能给您一个完全有效的解决方案,但是您需要做的是挖掘unitils API并直接使用DataSetFactory加载数据。我认为您可以或多或少地重用找到这里的代码。
然后,如果需要在每个示例之前加载此数据集,只需使用doBefore调用即可。
https://stackoverflow.com/questions/5352026
复制相似问题