2015-01-14 2 views
3

Visual Studio 2013에 Google 테스트 러너 확장 프로그램을 설치했습니다. 특정 순서로 테스트 실행

지금 내가 RunnintTests.cpp 내부 테스트하기 전에 InitializationTests.cpp 안에 모든 테스트 케이스를 실행하려는 테스트 프로젝트를

TestProject 
    | 
    |-InitializationTests.cpp 
    |-RunningTests.cpp 

있습니다. 이것을 어떻게 할 수 있습니까?

+0

당신은 아마 앞으로이 문제를보고 있지만 확실히 * 당신이 당신을 나타내는 중요하기 위해 테스트 순서를 원하는 *있다 어떻게 든 테스트는 서로 의존합니까? – stijn

+0

초기화 테스트가 올바른 경우에만 실행중인 테스트를 실행하고 싶습니다. 이게 뭐가 잘못 됐어? googletest는 다른 테스트 실행을 중지하는 ASSERT_ *를 허용합니다. 질서가 중요하지 않다면이 의미는 무엇입니까? – Jepessen

+0

다른 사람들이 빌드 타임에 어떤 종류의 최적화로 실패 할 때 테스트를 실행하고 싶지 않지만 그다지 가치를 추가하지는 않습니다. 결국에는 모든 테스트를 실행해야합니다. 단지 코드에 추가 유지 보수 부담을 둡니다 (이 질문을하는 바로 그 사실로 입증 됨). – stijn

답변

0

테스트 순서는 독립적이어야합니다. 그리고 GTest는 주문을 통제 할 수 없습니다. 더 많은 것 : 시험은 평행선에서 달릴 수있다

+0

그래,하지만이 테스트에서 무언가를 던 졌는지 확인한 다음 이전에 테스트 한 작업을 사용하는 테스트를 작성합니다. Google Test는 'ASSERT_ *'도 추가 실행을 중지합니다. 주문을 정의 할 수 없다면이 의미는 무엇입니까? – Jepessen

+1

@ Jepessen : 하나의 테스트 ('TEST (foo, bar)')에서는'ASSERT'와'EXPECT'가 많이있을 수 있습니다. 이들은 테스트의 코드가 순서대로 실행됨에 따라 순서대로 검사됩니다. 두 가지 이상을 확인하는 경우'ASSERT'를 사용하여'TEST'의 실행을 중단 할 수 있습니다. –

+0

하지만 더 많은 것을 검사하고 싶다면 더 많은 단위 테스트를 사용해야합니다. 그렇지 않으면 사용법을 잘못 이해하고 있습니까? – Jepessen

2

테스트 프레임 워크는 일반적으로 테스트가 서로 독립적이지 않다는 일반적인 요구 사항이기 때문에 테스트 순서를 제어 할 수 없습니다.

언제든지 단일 테스트를 실행할 수 있으며 Google 테스트는 실행할 테스트를 제어하는 ​​강력한 옵션을 제공합니다. Google Test advanced guide에서 : 당신이 필터 문자열에 GTEST_FILTER 환경 변수 또는 --gtest_filter 플래그를 설정하면 는, 구글 테스트는 그의 전체 이름 (TestCaseName.TestName의 형태로) 시험에 대한 필터

일치를 실행합니다 사용 사례, 당신이 호출하여 테스트 프로젝트에서 모든 테스트를 실행 랬 :

TestProject 

당신은 실행 만 초기화 테스트를 실행할 수 있습니다 :

TestProject --gtest_filter=InitializationTests.* 

(제공하기를 InitialisationTests.cpp에는 테스트 케이스 InitializationTests에 대한 테스트가 포함되어 있습니다.

4

확실하게 할 수 있습니다! 그것은 구체적이지 않은 프로그램입니다.
MAIN.CPP :

::testing::GTEST_FLAG(filter) = "tA.*"; 
RUN_ALL_TESTS(); 
::testing::GTEST_FLAG(filter) = "tB.*"; 
RUN_ALL_TESTS(); 
::testing::GTEST_FLAG(filter) = "tC.*"; 
return RUN_ALL_TESTS(); 
그것은 다음 순서로 실행됩니다

:

tA.*, 
tB.*, 
tC.*, 
+0

이 질문에 대한 좋은 대답이라고 생각합니다. 그것은 독단적 인 강의로 끝난 일을 얻습니다. 우리는 테스트가 어떤 순서로 실행되는지는 중요하지 않지만 때로는 인생이 그렇게되지 않을 수도 있습니다. RUN_ALL_TESTS()의 반환 상태를 추적하는 것이 좋습니다. 수치심 gtest는 이것을 더 깔끔하게 허용하지 않습니다. 권장 사항입니까? 아니, 효과가 있니? 예. – JeffCharter

관련 문제