동적으로 생성되는 랙 유닛 테스트 스위트 : 테스트 통과 및 예외 발생

이방성

여러 테스트 케이스를 동적으로 생성하려고합니다.

기본적으로 다른 값으로 동일한 테스트를 여러 번 실행하고 싶습니다. 더 나은 방법이있을 수 있습니다. 알려 주시면 아직 찾지 못했습니다.

인스턴스 make-test-suite목록을 전달할 수 있다는 것을 발견 했습니다 test-case.

그래서 for/fold각 값 세트에 대해 생성 된 테스트 케이스를 플랫 목록으로 수집 하는 루프를 만들었습니다 .

내가 이해하지 못하는 것은 예외를 발생시키면서 모든 테스트를 성공적으로 실행하는 것 같습니다.

tests->test-suite-action received #<void> in list of tests (#<void> #<void> #<void> #<void> #<void> #<void> #<void> #<void>), which is not a test.
  context...:
   /usr/share/racket/pkgs/rackunit-lib/rackunit/private/test-suite.rkt:139:7
   /usr/share/racket/pkgs/rackunit-lib/rackunit/private/test-suite.rkt:136:2
   /usr/share/racket/pkgs/rackunit-lib/rackunit/private/test-suite.rkt:61:0: apply-test-suite
   /usr/share/racket/pkgs/rackunit-lib/rackunit/text-ui.rkt:91:0: run-tests
   "/write-thru-hash/tests.rkt": [running body]
   temp35_0
   for-loop
   run-module-instance!
   /usr/share/racket/pkgs/compiler-lib/compiler/commands/test.rkt:179:16

...

1 1 write-thru-hash/tests.rkt
8 tests passed
rkt-write-thru-hash_tests_1 exited with code 1

나는을 넣어 writeln내 테스트 각각의 경우에서와 내가 함께 축약 인쇄 그 라인을 볼 수 ...위. 그래서 테스트가 실제로 실행되고 있음을 알고 있습니다.

(테스트는 for/fold루프를 곱하고 방금 본문에 빌드 하기 전에 실행되고 잘 작동했습니다. test-suite)

tests.rkt코드는 다음과 같습니다.

(define test-cases-list
  (for/fold ([test-cases (list)])
            ([db-type (list 'sqlite 'postgres)])
    (append test-cases
      (list
        (test-case/fixture "basic operations" ... )
        (test-case/fixture "complex serializable keys and values" ... )
        (test-case/fixture "custom table-name" ... )
        (test-case/fixture "use initial src-hash" ... )))))

(define db-tests
  (make-test-suite "db-tests" test-cases-list))

( https://docs.racket-lang.org/fixture/fixture 라이브러리를 사용하고 있습니다 )

최신 정보:

실제로 writeln내 테스트 케이스에서 정의 시간에 인쇄되고 있다고 생각합니다 . 즉, test-suite컨텍스트 외부에 있기 때문에 너무 일찍 실행되고 있습니다 .

나는 checktest-casereturn 의 꼬리 추측한다. #<void>그래서 나는 테스트 케이스 자체가 아닌 테스트 결과 (보이드)로 목록을 채우고 그것을 테스트 스위트에 제공했다.

하지만 실제로 사용하는 방법을 모르겠습니다 make-test-suite...?

이방성

결국이를 수행하는 간단한 방법을 찾았습니다.

내 문제는 내 테스트 케이스의 여러 변형을 모두 동적으로 생성하려는 것 test-suite입니다. 작동하도록하는 방법을 찾지 못했습니다. 매크로를 작성해야 할 것 같습니다.

대신 간단한 방법은 여러 test-suite인스턴스 를 동적으로 정의한 다음 인스턴스 목록을 반복하여 실행하는 것입니다.

(define db-test-suites
  (for/list ([db-type (list 'sqlite 'postgres)]
             [db-conn-fixture (list sqlite-connection-delete-after-use
                                    postgres-connection)])
    (define suite-name (format "db-tests: ~a" db-type))
    (test-suite suite-name
      (test-case/fixture "basic operations"
        #:fixture db-conn-fixture
        (define db-conn (fixture-value db-conn-fixture))
        ...)
      (test-case/fixture "complex serializable keys and values"
        #:fixture db-conn-fixture
        (define db-conn (fixture-value db-conn-fixture))
        ...))))

(for ([current-test-suite db-test-suites])
  (run-tests current-test-suite))

최신 정보:

실제로 사용하는 방법도 찾았습니다 make-test-suite.

(define all-tests (make-test-suite "db-test-suites" db-test-suites))

(run-tests all-tests)

이것은 테스트 스위트가 다른 중첩 테스트 스위트를 포함 할 수 있다는 사실을 활용합니다. 이 형식이 run-tests위의 형식 ( 루프 run-tests에서 여러 번 호출)보다 좋습니다 (단일 호출) 라고 생각합니다 for.

원래 질문의 모든 문제 test-casetest-suite컨테이너 외부의 인스턴스 를 미리 정의하려는 것이 었습니다 . 그러나 여기 make-test-suite에서 test-suite인스턴스 목록을 전달 하여 인스턴스 내의 테스트가 나중에 run-tests.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

유닛 테스트 101-내 유닛 내에서 예외 발생

분류에서Dev

유닛 테스트 향상 및 예외 포착

분류에서Dev

예상되는 예외 발생 후 테스트 응답

분류에서Dev

TestNG를 통해 테스트를 실행하는 동안 Null 포인터 예외 발생

분류에서Dev

LiveData, Coroutines 및 MockK로 여러 뷰 상태를 테스트하는 ViewModel 유닛

분류에서Dev

액터 및 유닛 테스트

분류에서Dev

작성 및 예외 기능 테스트를위한 Junit 통합 테스트 문제

분류에서Dev

midje로 예외가 발생하는지 테스트하는 방법

분류에서Dev

부스트 유닛 테스트로 exit () 테스트

분류에서Dev

스프링 부트 및 테스트로 통합 테스트를 실행하는 동안 오류가 발생했습니다.

분류에서Dev

NServiceBus : 이벤트가 게시되고 동시에 예외가 발생하는지 테스트

분류에서Dev

비동기 생성기에서 발생한 예외를 테스트하는 방법은 무엇입니까?

분류에서Dev

동일한 정적 클래스를 조롱하는 Power Mock으로 2 개의 Roboelectic 테스트 클래스를 실행할 때 ClassCastException 예외 발생

분류에서Dev

Microsoft 테스트 도구를 사용하여 예외 발생 여부 확인 (및 예외 수정)

분류에서Dev

Maven 플러그인에 대한 단위 테스트를 실행하는 동안 예외 발생-ComponentLookupException :: NoSuchElementException :: RepositorySystem

분류에서Dev

예외 발생 여부와 관계없이이 테스트가 성공하는 이유는 무엇입니까?

분류에서Dev

MockStore-예상대로 작동하지 않음, 테스트 디스패치 및 구독 중 오류 발생

분류에서Dev

Perl 스크립트 / 모듈 예외 및 죽는 테스트를위한 단위 테스트

분류에서Dev

Java에서 오류가 발생할 것으로 예상되는 테스트를 작성하는 방법

분류에서Dev

JUnit : 테스트 예외가 작동하지 않음 (AssertionError : 예외가 발생하더라도 예상되는 예외)

분류에서Dev

비동기 단위 테스트를 만들면 집계 예외가 발생합니다.

분류에서Dev

Eclipse에서 Scala 테스트를 실행할 때 예외 발생

분류에서Dev

Jest로 NGRX / 효과 테스트-테스트는 항상 통과

분류에서Dev

JAX-WS 및 wsimport, 생성 된 클라이언트 스텁으로 인해 예외 발생

분류에서Dev

Java 또는 Scala에서 동적으로 생성 테스트

분류에서Dev

신속한 단위 테스트에서 UICollectionView 대기열에서 예외 발생

분류에서Dev

CompletableFuture 유용성 및 단위 테스트

분류에서Dev

빈 테스트 스위트-테스트 유닛 RubyMine

분류에서Dev

별도의 메이븐 모듈에서 유닛 및 통합 테스트를위한 소나의 올바른 적용 범위 확보

Related 관련 기사

  1. 1

    유닛 테스트 101-내 유닛 내에서 예외 발생

  2. 2

    유닛 테스트 향상 및 예외 포착

  3. 3

    예상되는 예외 발생 후 테스트 응답

  4. 4

    TestNG를 통해 테스트를 실행하는 동안 Null 포인터 예외 발생

  5. 5

    LiveData, Coroutines 및 MockK로 여러 뷰 상태를 테스트하는 ViewModel 유닛

  6. 6

    액터 및 유닛 테스트

  7. 7

    작성 및 예외 기능 테스트를위한 Junit 통합 테스트 문제

  8. 8

    midje로 예외가 발생하는지 테스트하는 방법

  9. 9

    부스트 유닛 테스트로 exit () 테스트

  10. 10

    스프링 부트 및 테스트로 통합 테스트를 실행하는 동안 오류가 발생했습니다.

  11. 11

    NServiceBus : 이벤트가 게시되고 동시에 예외가 발생하는지 테스트

  12. 12

    비동기 생성기에서 발생한 예외를 테스트하는 방법은 무엇입니까?

  13. 13

    동일한 정적 클래스를 조롱하는 Power Mock으로 2 개의 Roboelectic 테스트 클래스를 실행할 때 ClassCastException 예외 발생

  14. 14

    Microsoft 테스트 도구를 사용하여 예외 발생 여부 확인 (및 예외 수정)

  15. 15

    Maven 플러그인에 대한 단위 테스트를 실행하는 동안 예외 발생-ComponentLookupException :: NoSuchElementException :: RepositorySystem

  16. 16

    예외 발생 여부와 관계없이이 테스트가 성공하는 이유는 무엇입니까?

  17. 17

    MockStore-예상대로 작동하지 않음, 테스트 디스패치 및 구독 중 오류 발생

  18. 18

    Perl 스크립트 / 모듈 예외 및 죽는 테스트를위한 단위 테스트

  19. 19

    Java에서 오류가 발생할 것으로 예상되는 테스트를 작성하는 방법

  20. 20

    JUnit : 테스트 예외가 작동하지 않음 (AssertionError : 예외가 발생하더라도 예상되는 예외)

  21. 21

    비동기 단위 테스트를 만들면 집계 예외가 발생합니다.

  22. 22

    Eclipse에서 Scala 테스트를 실행할 때 예외 발생

  23. 23

    Jest로 NGRX / 효과 테스트-테스트는 항상 통과

  24. 24

    JAX-WS 및 wsimport, 생성 된 클라이언트 스텁으로 인해 예외 발생

  25. 25

    Java 또는 Scala에서 동적으로 생성 테스트

  26. 26

    신속한 단위 테스트에서 UICollectionView 대기열에서 예외 발생

  27. 27

    CompletableFuture 유용성 및 단위 테스트

  28. 28

    빈 테스트 스위트-테스트 유닛 RubyMine

  29. 29

    별도의 메이븐 모듈에서 유닛 및 통합 테스트를위한 소나의 올바른 적용 범위 확보

뜨겁다태그

보관