D Language
단위 테스팅
수색…
통사론
- unittest {...} - "unittesting"모드에서만 실행되는 블록
- assert (<부울 값으로 평가되는 표현식>, <선택적 오류 메시지>)
단위 테스트 블록
테스트는 안정적인 버그없는 응용 프로그램을 보장하는 훌륭한 방법입니다. 대화 형 문서로 사용되며 기능을 중단하기 위해 두려움없이 코드를 수정할 수 있습니다. D는 D 언어의 일부로 unittest
블록에 대한 편리하고 고유 한 구문을 제공합니다. D 모듈의 어느 곳에서도 unittest
블록을 사용하여 소스 코드의 기능을 테스트 할 수 있습니다.
/**
Yields the sign of a number.
Params:
n = number which should be used to check the sign
Returns:
1 for positive n, -1 for negative and 0 for 0.
*/
T sgn(T)(T n)
{
if (n == 0)
return 0;
return (n > 0) ? 1 : -1;
}
// this block will only be executed with -unittest
// it will be removed from the executable otherwise
unittest
{
// go ahead and make assumptions about your function
assert(sgn(10) == 1);
assert(sgn(1) == 1);
assert(sgn(-1) == -1);
assert(sgn(-10) == -1);
}
unittest 실행
-unittest
플래그가 D 컴파일러에 전달되면 모든 unittest 블록이 실행됩니다. 종종 컴파일러가 스텁 된 main
기능을 생성하게하는 것이 유용합니다. 컴파일 및 실행 래퍼 rdmd
사용하면 D 프로그램을 테스트하는 것이 쉽습니다.
rdmd -main -unittest yourcode.d
물론 원하는 경우이 프로세스를 두 단계로 나눌 수도 있습니다.
dmd -main -unittest yourcode.d
./yourcode
dub
프로젝트의 경우 모든 파일을 컴파일하고 unittest 블록을 실행하는 것이 편리합니다.
dub test
프로 팁 : 티핑을 저장하기 위해 쉘 별명으로`tdmd`를 정의하십시오.
alias tdmd="rdmd -main -unittest"
다음을 사용하여 파일을 테스트하십시오.
tdmd yourcode.d
주석이 첨부 된 단위 테스트
템플릿으로 @nogc
코드의 경우 함수 속성 (예 : @nogc
가 올바르게 추론되었는지 확인하는 것이 유용합니다. 특정 테스트를 위해이를 확인하여 전체 unittest에 주석을 달 수 있음)
@safe @nogc pure nothrow unittest
{
import std.math;
assert(exp(0) == 1);
assert(log(1) == 0);
}
물론 D에서 모든 블록은 속성으로 주석을 달 수 있으며 컴파일러는 해당 블록이 올바른지 확인합니다. 예를 들어, 다음은 위의 예제와 유사합니다.
unittest
{
import std.math;
@safe {
assert(exp(0) == 1);
assert(log(1) == 0);
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow