2014-10-19 3 views
3

'-unittest'dmd 스위치를 사용하여 unittests가 실행되는 파일을 선택하는 방법을 이해하려고합니다.타사 코드의 unittest 실행 끄기

unittest 블록을 포함하고있는 "a.d"파일이 있습니다. 파일 "a.d"는 자신의 unittest 블록을 포함하는 타사 모듈 (파일 "b1.d"및 "b2.d"가 필요함)에서 가져옵니다.

타사 코드로 테스트를 실행하고 싶지 않습니다. 테스트를 a.d로 실행하고 싶습니다. 내가 처음 타사 코드 다음

dmd -c b1.d b2.d 

dmd -unittest a.d b1.o b2.o 

에서 복사 한 unittests 내 코드로 연결하려고 컴파일하면

그때 오류가 말을 얻을 수 있다는 모듈 광고를 가져 오려고하는 b1.d가 읽을 수없는 파일에 있습니다.

누구든지이 작업을 수행하는 방법을 보여줄 수 있습니까?

감사합니다. a.db1.db2.d를 가져 오기 때문에 당신이 원하는 무엇

답변

2

수 없습니다. 이는 해당 모듈을 컴파일러에 전달해야 함을 의미합니다. 일부 * .o 인 파일을 연결하려면

은 더 복잡하다 : 당신이 (* 단지 * .so를에 대한 같은 그들을 위해 .di 파일) 따라서 그것은 좋은 생각이 아니다 인터페이스를 작성해야 이 메커니즘을 사용하여 unittests를 우회하십시오. (비록 이것이 약간 무거울 수도 있지만).

일부 unittest를 임의로 선택하는 더 간단한 방법은 특성 getUnitTests을 사용하는 것입니다. 정말 갈 길이 멀다.

+0

getUnitTests는 여전히 -unittest 스위치 사용에 의존하지 않으므로 b1.d 및 b2.d의 모든 unittest를 컴파일하는 데 여전히 직면하고 있습니까? – beltsonata

+0

하지만 테스트를 선택하고 실행할 수있는 함수를 작성할 수는 있지만 독점적 인 의미입니다. 설명서의 예제를보십시오. –

+0

귀하의 Q는 타사 *의 unittest ** 실행 **을 중단하지 않습니다. * 타사 *의 unittest ** 컴파일 **을 해제하지 않습니다. –

1

거의 다 왔어. 그것 뿐이다

dmd a.o b1.o b2.o 

: 그때 별도의 컴파일 및 연결 방법, 즉

dmd -c -unittest a.d 

등을 사용합니다.

+0

a.d가 b1.d에서 가져 오기 때문에 컴파일되지 않습니다. 그러면 b2.d가 가져옵니다. – beltsonata