내 Scala 테스트를 최적화하는 방법에 대한 조언이 필요합니다.

알렉산더 아렌 다르

자동화를 위해 ScalaTest를 사용하고 있습니다. 일반적인 테스트 논리 구조는 테스트가 응용 프로그램 논리를 검사 한 다음 정리하는 것입니다. 그래서 그것을 테스트 본문 부분과 테스트 정리 부분이라고합시다. 테스트 본문이 실패하면 테스트 보고서에서보고 싶습니다. 테스트 본문이 실패하지 않지만 정리 부분이 실패하면 테스트 보고서에서 테스트가 오류로 끝났음을 확인하고 싶습니다. 그래서 다음과 같은 구조를 생각해 냈습니다 (예는 제가 제공 할 수있는 가장 간단한 것입니다).

"Admin" should "be able to create a new team" in{
    val tempTeam = Team("Temp QA Team")
    val attempt=Try{
      When("Admin opens the Teams view")
      TeamsPage.open
      And("creates a new team")
      TeamsPage.createNewTeam(tempTeam)
      Then("this team is shown in the list")
      TeamsPage.isParticularTeamShownInTeamList(tempTeam.name) shouldBe true
    }
    val cleanUp = Try(TeamsPage.cleanUpTeam(tempTeam))
    attempt match{
      case Failure(e) => throw e
      case Success(r) =>{
        if(cleanUp.isFailure) cleanUp.get
        r
      }
    }
  }

테스트 본문 부분이 성공할 때뿐만 아니라 항상 실행하려면 정리 부분이 필요합니다.

예상대로 작동하지만 두 가지 문제가 있습니다.

  1. IntelliJ Idea cleanUp.get는 쓸모없는 표현 이라고 말합니다 . 그 부분을 더 정확한 방식으로 작성하는 방법은 무엇입니까? 나는 그것을으로 다시 쓸 수 있으며 if(cleanUp.isFailure) throw cleanUp.failed.get, IDE는 불평하지 않을 것이지만 실제로는 동일한 진술을 작성하는 더 긴 방법입니다.
  2. 테스트 본문 부분과 정리 부분의 결과를 실제로 비교하고 반환 할 내용을 결정하는이 테스트 코드의 마지막 부분은 약간 부풀어 보입니다. 더 간결하고 명확하게 만드는 방법에 대해 조언 해 주시겠습니까?
이안 맥 레어드

올바르게 수행하려는 작업을 이해하면 대답은 다음 flatMapmap같습니다.scala.util.Try

귀하의 경우 (코드를 그대로 사용)

"Admin" should "be able to create a new team" in{
  val tempTeam = Team("Temp QA Team")
  val attempt=Try{
    When("Admin opens the Teams view")
    TeamsPage.open
    And("creates a new team")
    TeamsPage.createNewTeam(tempTeam)
    Then("this team is shown in the list")
    TeamsPage.isParticularTeamShownInTeamList(tempTeam.name) shouldBe true
  }
  val cleanUp = Try(TeamsPage.cleanUpTeam(tempTeam))
  attempt.flatMap(r => cleanup.map(c => r)).get
}

attempt실패하지 않는 한의 결과를 반환합니다 .이 경우 attempt의 예외가 발생합니다. cleanup(귀하의 코드처럼) 의 성공적인 결과를 무시 하지만 cleanup예외가 발생하면 해당 예외 발생합니다.

NB 나는 실제로 IDE에서 이것을 시도하지 않았으므로 이것이 get쓸모없는 표현 이라고 말하는 IntelliJ에 대한 귀하의 질문 # 1을 해결할 수 있는지 말할 수 없습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

React-상태 데이터 구조를 설계하는 방법에 대한 조언이 필요합니다.

분류에서Dev

Angular를 사용하여 PHP에 올바르게 POST하는 방법에 대한 조언이 필요합니다.

분류에서Dev

'오류, 예상 표현식 int'및 내 C 앱 구조화에 대한 조언이 필요합니다.

분류에서Dev

가상화 소프트웨어 및 적합한 Linux 배포판에 대한 조언이 필요합니다.

분류에서Dev

수백만 개의 시계열 데이터를 Cassandra DB에 효율적으로 삽입하는 방법에 대한 조언이 필요합니다.

분류에서Dev

다중 조인으로 SQL 쿼리 최적화. 빠르고 효율적으로 데이터를 검색하는 기술에 대한 조언이 필요합니다.

분류에서Dev

Ionic 및 Angular를 처음 사용하며 외부 json 요청에 대한 조언이 필요합니다.

분류에서Dev

내 기능에 대한 테스트 케이스를 작성하는 방법은 무엇입니까? PHP

분류에서Dev

부트 스트랩 div 숨기기에 대한 조언이 필요합니다.

분류에서Dev

초록을 선언해야하는 이유. 내 주요 활동에 DirectionFinderListener를 구현하는 대체 방법이 필요합니다.

분류에서Dev

각도 $ modal에 대한 단위 테스트를 완료하는 데 도움이 필요합니다.

분류에서Dev

Django / DRF를 사용할 때 순환 가져 오기를 처리 및 / 또는 피하는 방법에 대한 아키텍처 조언이 필요합니다.

분류에서Dev

mysql 데이터베이스 설계에 대한 조언이 필요합니다.

분류에서Dev

이 테이블을 그룹화하는 방법에 대한 아이디어가 필요합니다.

분류에서Dev

Apache 최적화 : 내 웹 사이트에 대해 자주 발생하는 "죄송합니다."오류

분류에서Dev

내 프로젝트에 앱을 통합하려면 조언이 필요합니다.

분류에서Dev

JAVA 8의 람다 함수 내에서 사용자 입력이 필요한 코드를 테스트하는 방법은 무엇입니까?

분류에서Dev

기본적인 Java WebApplication / Servlet에 대한 조언이 필요합니다.

분류에서Dev

정적 및 미디어 파일에 대한 조언이 필요합니다.

분류에서Dev

Ruby의 선언 방법에 대한 문서를 찾는 데 도움이 필요합니다.

분류에서Dev

동일한 트리 내에서 다른 유형의 태그를 삭제하려면 x 위치를 '뒤로'하는 방법에 대한 자바 스크립트 도움말이 필요합니다.

분류에서Dev

외부 통제를 참조하는 방법에 대한 몇 가지 제안이 필요합니다.

분류에서Dev

Windows 서비스 및 CDO에 대한 조언이 필요합니다.

분류에서Dev

ExtJS : 상위 컨테이너 내에서 구성 요소를 최대화하는 방법은 무엇입니까?

분류에서Dev

Cypress 테스트 중 Chrome 오류에 대한 해결 방법이 있습니까 : "대화 상자를 언로드하기 전에 사용자 제스처 필요"

분류에서Dev

PHP로 포럼을 만드는 것에 대한 조언이 필요합니다

분류에서Dev

내 C ++ 프로그래밍 디버깅에 대한 도움이 필요합니다 (텍스트 ASCII 조작).

분류에서Dev

오류 : 'NavigationContainer'를 다른 내부에 중첩 한 것 같습니다. 일반적으로 앱의 루트에 하나의 컨테이너 만 필요합니다.

분류에서Dev

내 MYSQl 쿼리에 대한 저장 프로 시저를 만드는 데 도움이 필요합니다.

Related 관련 기사

  1. 1

    React-상태 데이터 구조를 설계하는 방법에 대한 조언이 필요합니다.

  2. 2

    Angular를 사용하여 PHP에 올바르게 POST하는 방법에 대한 조언이 필요합니다.

  3. 3

    '오류, 예상 표현식 int'및 내 C 앱 구조화에 대한 조언이 필요합니다.

  4. 4

    가상화 소프트웨어 및 적합한 Linux 배포판에 대한 조언이 필요합니다.

  5. 5

    수백만 개의 시계열 데이터를 Cassandra DB에 효율적으로 삽입하는 방법에 대한 조언이 필요합니다.

  6. 6

    다중 조인으로 SQL 쿼리 최적화. 빠르고 효율적으로 데이터를 검색하는 기술에 대한 조언이 필요합니다.

  7. 7

    Ionic 및 Angular를 처음 사용하며 외부 json 요청에 대한 조언이 필요합니다.

  8. 8

    내 기능에 대한 테스트 케이스를 작성하는 방법은 무엇입니까? PHP

  9. 9

    부트 스트랩 div 숨기기에 대한 조언이 필요합니다.

  10. 10

    초록을 선언해야하는 이유. 내 주요 활동에 DirectionFinderListener를 구현하는 대체 방법이 필요합니다.

  11. 11

    각도 $ modal에 대한 단위 테스트를 완료하는 데 도움이 필요합니다.

  12. 12

    Django / DRF를 사용할 때 순환 가져 오기를 처리 및 / 또는 피하는 방법에 대한 아키텍처 조언이 필요합니다.

  13. 13

    mysql 데이터베이스 설계에 대한 조언이 필요합니다.

  14. 14

    이 테이블을 그룹화하는 방법에 대한 아이디어가 필요합니다.

  15. 15

    Apache 최적화 : 내 웹 사이트에 대해 자주 발생하는 "죄송합니다."오류

  16. 16

    내 프로젝트에 앱을 통합하려면 조언이 필요합니다.

  17. 17

    JAVA 8의 람다 함수 내에서 사용자 입력이 필요한 코드를 테스트하는 방법은 무엇입니까?

  18. 18

    기본적인 Java WebApplication / Servlet에 대한 조언이 필요합니다.

  19. 19

    정적 및 미디어 파일에 대한 조언이 필요합니다.

  20. 20

    Ruby의 선언 방법에 대한 문서를 찾는 데 도움이 필요합니다.

  21. 21

    동일한 트리 내에서 다른 유형의 태그를 삭제하려면 x 위치를 '뒤로'하는 방법에 대한 자바 스크립트 도움말이 필요합니다.

  22. 22

    외부 통제를 참조하는 방법에 대한 몇 가지 제안이 필요합니다.

  23. 23

    Windows 서비스 및 CDO에 대한 조언이 필요합니다.

  24. 24

    ExtJS : 상위 컨테이너 내에서 구성 요소를 최대화하는 방법은 무엇입니까?

  25. 25

    Cypress 테스트 중 Chrome 오류에 대한 해결 방법이 있습니까 : "대화 상자를 언로드하기 전에 사용자 제스처 필요"

  26. 26

    PHP로 포럼을 만드는 것에 대한 조언이 필요합니다

  27. 27

    내 C ++ 프로그래밍 디버깅에 대한 도움이 필요합니다 (텍스트 ASCII 조작).

  28. 28

    오류 : 'NavigationContainer'를 다른 내부에 중첩 한 것 같습니다. 일반적으로 앱의 루트에 하나의 컨테이너 만 필요합니다.

  29. 29

    내 MYSQl 쿼리에 대한 저장 프로 시저를 만드는 데 도움이 필요합니다.

뜨겁다태그

보관