추상 클래스를 테스트하고 싶습니다. 필자는 추상 코드에서 작동하는 많은 테스트 메소드를 작성했습니다. 이제 구현을 테스트하고 싶습니다. 내 테스트 클래스도 추상적이며 메서드는 MyAbstractClass CreateInstance()
입니다. 안타깝게도 구현에는 두 개의 생성자가 있고 각 생성자에는 두 개의 매개 변수가 있습니다. 너무 추상적 인 테스트를 상속받은 4 가지 테스트 클래스를 만들고 싶지 않습니다. 너무 많은 코드이기 때문입니다.
생성자의 다른 매개 변수로 동일한 테스트를 실행할 수 있습니까? 예를 들어, XYZ 테스트 메서드가 있고이 메서드를 추상 클래스의 다른 인스턴스를 사용하여 4 번 실행하려고합니다.추상 클래스, 많은 생성자 테스트 구현
답변
추상 클래스의 인스턴스를 만들 수 없으므로 테스트 할 수있는 방법이 없습니다. 그것은 당신이 인터페이스를 테스트하기를 원했던 것과 같습니다 ...
오직 파생 클래스를 테스트 할 수 있습니다. 테스트해야하는 경우 클래스를 추상화하지 않아도됩니다.
나는 추상 클래스를 테스트하고있다. 나는 추상적 인 수업을위한 많은 시험을 가지고있다. 내 추상 테스트 클래스에서는 추상 GetInstance 메서드가 있습니다. 이 메소드는 상속 된 테스트 클래스에 구현되어야한다. 상속 된 테스트 클래스는 테스트중인 추상 클래스의 구체적인 구현을 생성합니다. – zgnilec
CreateInstance()
을 CreateInstances()
으로 대체하고 인스턴스를 반복 테스트하여 테스트 할 수 있습니다.
전혀 다른 2 개의 생성자가있는 구체적인 구현은 코드 냄새 일 가능성이 높습니다.
나는 그것에 대해 생각했다. 어쩌면 코드 냄새가 나기도하지만 첫 번째 ctor는 float []를 인수로 사용하고 두 번째 short []를 인수로 사용하므로 작은 변환 만 발생합니다. MSTest 도구를 사용하여 이러한 인스턴스를 반복하는 방법은 무엇입니까? 어떤 attibues? 테스트 전에 초기화 하시겠습니까? 모든 테스트 방법에서 foreach 루프가 좋지 않다고 생각합니다. – zgnilec
나는 추상적 인 테스트 방법에서 foreach 루프를 생각하고 있었다. 실제로 이상한 것이지만 그 트릭을 수행한다. – guillaume31
만약 내가 당신이라면 2 명의 생성자에 대해 2 가지 파생 테스트 클래스를 작성할 것입니다. 더 많은 일을하지만 더 논리적입니다. – guillaume31
- 1. C# 추상 클래스 생성자
- 2. 추상 클래스 생성자
- 3. 추상 클래스 및 생성자
- 4. C# 추상 클래스 구현
- 5. 추상 클래스, 생성자 및 인터페이스
- 6. 자바 추상 클래스 생성자 범위
- 7. 추상 클래스, 메서드 구현 구현
- 8. 추상 클래스 구현 인터페이스
- 9. 추상 클래스 확장 - 추상 메소드 구현
- 10. Python의 추상 클래스 테스트
- 11. Phpspec 테스트 클래스 생성자
- 12. pyjnius java 추상 클래스 구현
- 13. 자바 추상 클래스 생성자 및 새 키워드
- 14. 생성자에 인수가있는 추상 클래스 테스트
- 15. 추상 클래스 콘크리트 메서드 테스트
- 16. 유닛 테스트 Groovy의 추상 클래스
- 17. Moq를 사용하여 추상 클래스 테스트
- 18. 해결되지 않은 외부 (추상 클래스 생성자/소멸자)
- 19. 추상 클래스 : Single 생성자, 접근 수정 자?
- 20. Java : 추상 클래스 생성자 및 this()
- 21. 스칼라 클래스 생성자 및 추상 형식
- 22. 기본 생성자 및 개인 생성자 차이가있는 클래스가있는 추상 클래스
- 23. 상위 클래스의 추상 클래스 멤버 구현
- 24. 구현 추상 기본 모델 클래스, 레일 웨이 ™
- 25. 명시 적 구현 인터페이스의 추상 클래스 방법
- 26. 일부 구현 된 C++ 추상 클래스
- 27. 스칼라에서 리플렉션을 통해 추상 클래스 구현/인스턴스화
- 28. 빈 인터페이스와 추상 클래스 구현 구조
- 29. 많은 하위 클래스가있는 추상 Java 클래스 리펙토링
- 30. 추상 클래스의 생성자?
나는 추상적 인 클래스가 어떻게 인스턴스를 생성 할 수 있는지에 대해 의아하게 생각한다 ... 정의에 의해 불가능하지 않은가? – luk32
그 방법은 추상적이기도합니다. 상속 된 테스트 클래스에서이 메소드의 구현을 제공해야한다. – zgnilec
일부 조롱 라이브러리를 사용하지 않는 이유는 무엇입니까? F.e NS 대체물. –