2014-10-21 3 views
0

추상 클래스를 테스트하고 싶습니다. 필자는 추상 코드에서 작동하는 많은 테스트 메소드를 작성했습니다. 이제 구현을 테스트하고 싶습니다. 내 테스트 클래스도 추상적이며 메서드는 MyAbstractClass CreateInstance()입니다. 안타깝게도 구현에는 두 개의 생성자가 있고 각 생성자에는 두 개의 매개 변수가 있습니다. 너무 추상적 인 테스트를 상속받은 4 가지 테스트 클래스를 만들고 싶지 않습니다. 너무 많은 코드이기 때문입니다.
생성자의 다른 매개 변수로 동일한 테스트를 실행할 수 있습니까? 예를 들어, XYZ 테스트 메서드가 있고이 메서드를 추상 클래스의 다른 인스턴스를 사용하여 4 번 실행하려고합니다.추상 클래스, 많은 생성자 테스트 구현

+0

나는 추상적 인 클래스가 어떻게 인스턴스를 생성 할 수 있는지에 대해 의아하게 생각한다 ... 정의에 의해 불가능하지 않은가? – luk32

+0

그 방법은 추상적이기도합니다. 상속 된 테스트 클래스에서이 메소드의 구현을 제공해야한다. – zgnilec

+0

일부 조롱 라이브러리를 사용하지 않는 이유는 무엇입니까? F.e NS 대체물. –

답변

0

추상 클래스의 인스턴스를 만들 수 없으므로 테스트 할 수있는 방법이 없습니다. 그것은 당신이 인터페이스를 테스트하기를 원했던 것과 같습니다 ...

오직 파생 클래스를 테스트 할 수 있습니다. 테스트해야하는 경우 클래스를 추상화하지 않아도됩니다.

+0

나는 추상 클래스를 테스트하고있다. 나는 추상적 인 수업을위한 많은 시험을 가지고있다. 내 추상 테스트 클래스에서는 추상 GetInstance 메서드가 있습니다. 이 메소드는 상속 된 테스트 클래스에 구현되어야한다. 상속 된 테스트 클래스는 테스트중인 추상 클래스의 구체적인 구현을 생성합니다. – zgnilec

1

CreateInstance()CreateInstances()으로 대체하고 인스턴스를 반복 테스트하여 테스트 할 수 있습니다.

전혀 다른 2 개의 생성자가있는 구체적인 구현은 코드 냄새 일 가능성이 높습니다.

+0

나는 그것에 대해 생각했다. 어쩌면 코드 냄새가 나기도하지만 첫 번째 ctor는 float []를 인수로 사용하고 두 번째 short []를 인수로 사용하므로 작은 변환 만 발생합니다. MSTest 도구를 사용하여 이러한 인스턴스를 반복하는 방법은 무엇입니까? 어떤 attibues? 테스트 전에 초기화 하시겠습니까? 모든 테스트 방법에서 foreach 루프가 좋지 않다고 생각합니다. – zgnilec

+0

나는 추상적 인 테스트 방법에서 foreach 루프를 생각하고 있었다. 실제로 이상한 것이지만 그 트릭을 수행한다. – guillaume31

+0

만약 내가 당신이라면 2 명의 생성자에 대해 2 가지 파생 테스트 클래스를 작성할 것입니다. 더 많은 일을하지만 더 논리적입니다. – guillaume31

관련 문제