An example unit test, using WordSpec, which follows a BDD-style syntax, is below:
"Multiplying two integers" when {
"one is negative" should {
"have a negative result" in {
val positive = scala.util.Random.nextInt(10000)
val negative = -1 * scala.util.Random.nextInt(10000)
val result = positive * negative
assert(result < 0, s"positive * negative should be negative, but is ${result}!")
}
}
}
Unit test methods can be created on-the-fly at runtime, and therefore you can take any data source and turn it into a set of unit tests. Here is an example using WordSpec, which is one of the several flavors of writing unit tests in Scala.
(1 to 100).foreach(testCaseNumber => {
s"Test scenario $testCaseNumber" when {
"doing something" should {
"return success" in {
doSomethingWithData(getDataForTest(testCaseNumber))
}
}
}
}
When you run all unit tests in your class, ScalaTest will show each of these 100 data as a separate test case with separate pass/fails.
It's really slick, and if you have some common test that you want to run over and over with some slight modification that can be controlled based on some parameter, I recommend you give it a try!
No comments:
Post a Comment