IT박스

sbt의 ScalaTest : 태그없이 단일 테스트를 실행하는 방법이 있습니까?

itboxs 2020. 6. 28. 19:24
반응형

sbt의 ScalaTest : 태그없이 단일 테스트를 실행하는 방법이 있습니까?


sbt에서 실행하면 단일 테스트를 실행할 수 있다는 것을 알고 있습니다.

testOnly *class -- -n Tag

태그없이 단일 테스트를 실행하도록 sbt / scalatest에 지시하는 방법이 있습니까? 예를 들면 다음과 같습니다.

testOnly *class -- -X 2

"클래스에서 두 번째 테스트를 실행하십시오. 무엇이든간에"입니다. 많은 테스트를 수행했으며 아무도 태그를 지정하지 않아도되므로 태그없이 단일 테스트를 실행할 수있는 방법이 있습니까?


이것은 대화식 모드에서 ScalaTest 2.1.3부터 ​​지원됩니다 :

testOnly *MySuite -- -z foo

이름에 하위 문자열 "foo"가 포함 된 테스트 만 실행합니다.

부분 문자열이 아닌 정확하게 일치하려면 -t대신을 사용하십시오 -z.


다른 답변과 함께 구체적인 예를 추가하고 싶었습니다.

테스트하려는 클래스의 이름을 지정해야하므로 다음 프로젝트 (Play 프로젝트)가있는 경우

프로젝트 플레이

LoginSBT 콘솔에서 다음 명령을 실행하여 테스트 만 테스트 할 수 있습니다 .

test:testOnly *LoginServiceSpec

SBT 콘솔 외부에서 명령을 실행중인 경우 다음을 수행하십시오.

sbt "test:testOnly *LoginServiceSpec"

테스트 클래스 내에서 태그가 지정되지 않은 단일 테스트를 실행하는 방법을 볼 수 없지만이 질문에 부딪 치는 사람에게는 유용한 것으로 보이므로 워크 플로를 제공하고 있습니다.

sbt 세션 내에서 :

test:testOnly *YourTestClass

(별표는 와일드 카드이므로 전체 경로를 지정할 수 com.example.specs.YourTestClass있습니다.)

해당 테스트 클래스 내의 모든 테스트가 실행됩니다. 아마도 실패한 테스트에 가장 관심이 있으므로 실패한 구현을 수정 한 다음 실행하십시오.

test:testQuick

... 실패한 테스트 만 실행합니다. (가장 최근에 실행 된 test:testOnly명령을 반복하는 것은 test:testQuick이 경우 와 동일 하지만 테스트 방법을 적절한 테스트 클래스로 나눌 경우 와일드 카드를 사용하여 test:testQuick실패한 테스트를보다 효율적으로 다시 실행할 수 있습니다.)

ScalaTest의 테스트 명명법은 특정 테스트 방법이 아니라 테스트 클래스이므로 태그가없는 모든 메서드가 실행됩니다.

테스트 클래스에 테스트 메소드가 너무 많으면 별도의 클래스로 분류하거나 적절하게 태그를 지정하십시오. (이는 테스트중인 클래스가 단일 책임 원칙 을 위반 하고 리팩토링을 사용할 수 있음을 나타내는 신호일 수 있습니다 .)


타일러의 예를 단순화하기 위해.

test:-접두사가 필요하지 않습니다.

그의 예에 따르면 :

에서 sbt-console :

testOnly *LoginServiceSpec

그리고 터미널에서 :

sbt "testOnly *LoginServiceSpec"

참고 URL : https://stackoverflow.com/questions/11159953/scalatest-in-sbt-is-there-a-way-to-run-a-single-test-without-tags

반응형