libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % Test
scala
import org.scalatest._
class CalculatorSpec extends FlatSpec with Matchers {
"A Calculator" should "return the sum of two numbers" in {
val result = Calculator.add(2, 3)
result shouldEqual 5
}
}
object Calculator {
def add(a: Int, b: Int): Int = a + b
}
scala
import org.scalatest._
object Main extends App {
val calculatorSpec = new CalculatorSpec
(new Runner).run(calculatorSpec.getClass.getName)
}
class Runner extends App {
def run(testClassName: String): Unit = {
(new RunnerSuite(List(testClassName))).execute()
}
}
class RunnerSuite(testClassNames: List[String]) extends Suite {
val tests = testClassNames.map { className =>
Class.forName(className).newInstance.asInstanceOf[Suite]
}
override def run(testName: Option[String], args: org.scalatest.Args): org.scalatest.Status =
runNestedSuites(args)
override def nestedSuites: collection.immutable.IndexedSeq[Suite] = tests.toIndexedSeq
}