2012-11-30 2 views
7

MiniTest 제품군이 있습니다. 기본 사양 인 Minitest::Unit::TestCase을 사용하고 있습니다. 내 TestCase 하위 클래스에 정의 된 setupteardown 메서드가 있습니다. 테스트 파일을 실행할 때 완벽하게 작동합니다 : ruby test/whatever_test.rb. 하지만 rake test을 실행하면 setupteardown이 호출되지 않습니다. 내 Rakefile의 관련 부분은 다음과 같습니다 Rake::TestTask를 사용하는 경우Minitest # Rake를 통한 테스트 실행시 #setup 및 #teardown이 호출되지 않습니다.

require 'rake/testtask' 

Rake::TestTask.new do |t| 
    t.test_files = FileList['test/*_test.rb'] 
    t.verbose = true 
end 

setupteardown가 실행되지 않을 것이다?

여기에 테스트 케이스 코드를 붙여 넣겠습니다.하지만 꽤 많이 있습니다. 나는 당신이보고 싶어하는 특정 섹션이 있다면 그것의 일부 서브셋을 붙여 넣을 것입니다.

Ruby 1.9.3-p194에서 Minitest 4.3.2를 실행 중입니다.

+1

최소한의 작동하지 않는 테스트를 게시 할 수 있습니까? – tadman

답변

14

다른 테스트 케이스가 setupteardown 메소드를 덮어 쓰는 것이 문제였습니다. 실수로 두 개의 테스트 케이스에 동일한 클래스 이름을 부여했기 때문에 덮어 쓰기가 발생했습니다. 당연히이 오류는 단일 테스트 케이스를 실행했을 때 발생하지 않았습니다. 이는 Rake를 사용할 때의 동작 차이를 설명합니다.

+0

Rails 5 시스템 테스트 (minitest 사용)에서 비슷한 문제가 발생했습니다. 시스템 테스트를위한 설정 방법은 모든 시스템 테스트를 실행할 때 실행되지 않았지만 시스템 테스트 파일을 실행할 때만 실행되었습니다. 우리의 수정은 단순히 시스템 테스트 파일의 이름을 다른 것으로 변경하고 발생하는 무시를 수정했습니다. 감사! – Neil

1

필자의 경우 소켓 통신 테스트를 작성하고 send이라는 도우미 메서드를 추가했습니다. MiniTest는 내부적으로 send을 사용하여 teardown 메소드를 호출하기 때문에 대신 method-dispatch 대신 send이라고 부릅니다.

관련 문제