如何使用SBT的测试功能为我的应用程序创建简单的单元测试?
我希望答案是我可以src/test/scala
为我的项目写一个单独的文件,从SBT导入一些特殊的测试包,这使得编写测试就像编写单个方法一样简单.
ExampleSbtTest教程似乎做了比我需要的更复杂的事情,我在SBT GoogleCode页面上找不到更简单的东西.
Ste*_*fen 12
使用SBT进行测试
无论您想使用哪个版本的SBT,基本上您都必须执行以下步骤:
这些基本步骤对于sbt 0.7分支(即谷歌代码中的分支)和当前的sbt 0.10分支(现在在github上开发和记录)是相同的.但是,如何定义测试依赖关系存在细微差别,因为0.10提供了一种新的快速配置方法,不存在于0.7中.
定义SBT 0.7的依赖性
以下是使用sbt 0.7创建基本测试(基于scalacheck)的方法.通过在空文件夹中调用sbt来创建一个新的sbt 0.7项目.切换到自动创建的项目文件夹并创建新的构建文件夹
# cd [your-project-root]/project
# mkdir build
Run Code Online (Sandbox Code Playgroud)
更改为新创建的构建文件夹,并使用以下内容创建第一个项目构建文件Project.scala:
class Project(info: ProjectInfo) extends DefaultProject(info) {
val scalacheck = "org.scala-tools.testing" %% "scalacheck" % "1.9" % "test"
}
Run Code Online (Sandbox Code Playgroud)
因为对于0.7,测试文件夹是自动创建的,所以您可以立即开始编写第一个测试.跳到"创建简单测试"段落.
定义SBT 0.10的依赖性
对于0.10,可以使用sbt控制台添加依赖项.只需在项目目录中启动sbt并输入以下命令:
set libraryDependencies + ="org.scala-tools.testing"%%"scalacheck"%"1.9"%"test"session save
然后,您可以关闭sbt控制台并查看项目build.sbt文件.您可以轻松地发现上面的libraryDependencies行被添加到您的项目快速配置中.
由于0.10不会自动创建源文件夹.您必须自己创建测试文件夹:
# cd [project-root]
# mkdir -p src/test/scala
Run Code Online (Sandbox Code Playgroud)
这就是开始使用0.10所需要的一切.此外,关于使用0.10进行测试的文档远比旧版本详细.有关更多详细信息,请参阅测试维基页面.
创建一个简单的scalacheck测试
创建以下测试文件src/test/scala/StringSpecification.scala(取自scalacheck主页):
import org.scalacheck._
object StringSpecification extends Properties("String") {
property("startsWith") = Prop.forAll((a: String, b: String) => (a+b).startsWith(a))
property("endsWith") = Prop.forAll((a: String, b: String) => (a+b).endsWith(b))
// Is this really always true?
property("concat") = Prop.forAll((a: String, b: String) =>
(a+b).length > a.length && (a+b).length > b.length
)
property("substring") = Prop.forAll((a: String, b: String) =>
(a+b).substring(a.length) == b
)
property("substring") = Prop.forAll((a: String, b: String, c: String) =>
(a+b+c).substring(a.length, a.length+b.length) == b
)
}
Run Code Online (Sandbox Code Playgroud)
如前所述,对于"concat"规范,这个基本检查将失败,但这是开始测试和sbt所需的基本测试步骤.如果要使用其他测试框架,只需调整包含的依赖项即可.
运行测试
要运行测试,请打开sbt控制台并键入
> test
Run Code Online (Sandbox Code Playgroud)
这将运行src/test树中存在的所有测试,无论这些测试是基于java还是基于scala的测试.因此,您可以轻松地重用现有的Java单元测试并将它们逐步转换为scala.
归档时间: |
|
查看次数: |
4652 次 |
最近记录: |