나는 이와 같은 것을 가지고있다 :
public byte[] EncodeMyObject(MyObject obj)
나는 다음과 같이 단위 테스트를 해왔다.
byte[] expectedResults = new byte[3]{ 0x01, 0x02, 0xFF };
Assert.IsEqual(expectedResults, EncodeMyObject(myObject));
편집 : 내가 제안한 두 가지 방법은 다음과 같습니다.
1) 위의 예와 같이 하드 코딩 된 예상 값 사용.
2) 디코더를 사용하여 인코딩 된 바이트 배열을 디코딩하고 입력 / 출력 객체를 비교합니다.
방법 1에서 볼 수있는 문제는 그것이 취성이며 많은 하드 코딩 된 값이 필요하다는 것입니다.
방법 2의 문제점은 인코더 테스트가 올바르게 작동하는 디코더에 달려 있다는 것입니다. 인코더 / 디코더가 같은 위치에서 동일하게 고장난 경우 테스트에서 오 탐지가 발생할 수 있습니다.
이러한 유형의 방법을 테스트하는 유일한 방법 일 수 있습니다. 그 경우라면 괜찮습니다. 이러한 유형의 테스트를위한 더 나은 전략 이 있는지 질문합니다 . 작업중인 특정 인코더의 내부를 공개 할 수 없습니다. 나는 일반적으로 이러한 유형의 문제를 해결하는 방법을 묻고 있으며 내부가 중요하다고 생각하지 않습니다. 주어진 입력 객체가 항상 동일한 출력 바이트 배열을 생성한다고 가정합니다.
myObject
에서 이동myObject
에{ 0x01, 0x02, 0xFF }
? 해당 알고리즘을 분석하고 테스트 할 수 있습니까? 내가 묻는 이유는 현재 하나의 마법이 다른 마법을 생성한다는 것을 입증하는 테스트를받은 것처럼 보입니다. 하나의 입력이 하나의 출력을 생성한다는 유일한 확신입니다. 알고리즘을 세분화 할 수 있으면 알고리즘에 대한 신뢰도를 높이고 마법의 입력 및 출력에 덜 의존 할 수 있습니다.