단언문과 테스트를 공부하면서 예제를 공부 중이었다. 하지만, assertResult
라는 메서드를 연습 중이었는데 위와 같이 value scalatest is not a member of org
라는 에러가 발생하였다.
분명 교재에서나, 구글에서 검색한 예제문에서는 모두 org.scalatest.Matchers.assertResult
를 import 시켰었는데 왜 이런 오류가 발생했을까?
필자는 터미널에서 Scala
를 실행시키고 예제를 공부하고 있었다. 하지만, 관련 dependency들이 있어야 함을 여러 검색 결과를 통해 알게 되었다.
sudo sbt new scala/scalatest-example.g8
이라는 커맨드를 사용한다.
이때, sudo
를 반드시 빼놓으면 안 된다.
만약 sudo를 빼놓고 실행하면 위와 같은 디렉터리 생성 오류가 발생한다.
sudo로 제대로 실행 후 디렉터리가 생성 되었으면 해당 디렉터리로 이동한다.
해당 디렉터리에는 build.sbt
라는 파일과 project
, src
라는 디렉터리들이 생성되었고 dependency가 제대로 작성되어 있는 것을 알 수 있다.
./src/main/scala
디렉터리에 테스트할 메서드/객체가 담긴 스칼라 파일을 작성하고, ./src/test/scala
디렉터리에 테스트 코드를 작성한다.
필자는 공부를 위해 테스트 코드를 작성했으므로 간단하게 작성하였다.
./src/main/scala/AddCalculator.scala
object AddCalculator extends App {
def add(x:Int, y:Int) = x+y
}
./src/test/scala/AddCalculatorTest.scala
class AddCalculatorTest extends org.scalatest.funsuite.AnyFunSuite {
test("test add calculator") {
assertResult(7) {
AddCalculator.add(3, 5)
}
}
}
이렇게 작성하였다. 그 후, sudo sbt test
라는 명령어를 실행한다.
(여기서도 sudo
키워드를 빼면 안 된다.)
실패하는 테스트의 경우 몇 번째 줄에서 실패했는지, 어떤 값을 통해 실패했는 지 알 수 있다.