클래스는 유효하기 전에 항상 특정 멤버가 채워져 있어야합니다. 이를 강화하기 위해 클래스에는 기본 생성자가 없으며 대신 필요한 멤버의 값을 받아들이는 생성자가 있습니다. 지금은 하나가 미래에 추가됩니다, 우리가 생각 나게되도록, 실제로 디폴트 생성자가 없음을 확인하기 위해 테스트를 작성하고 싶습니다NUnit에서 컴파일 할 수없는 코드 테스트하기
public class MyClass
{
public string Owner { get; protected set; }
public MyClass(string owner)
{
this.Owner = owner;
}
}
: 설치에서는이 유사하다 하나가없는 이유와 그렇게하는 것의 영향을 고려해야 만합니다. 명백히 테스트에서 기본 생성자를 호출하려고 시도하는 것은 실패하지 않을 것이지만 컴파일되지는 않습니다.
원래 클래스를 수정하지 않고 이러한 종류의 테스트를 수행 할 수있는 좋은 방법이 있습니까? 그렇지 않다면 예외를 throw하는 기본 생성자를 구현할 수 있다고 가정합니다. 저의 유일한 망설임은 기본 생성자를 호출하는 것이 이제 컴파일 가능한 코드가되었다는 것과 그런 코드가 작성되지 않도록 다른 테스트에 의존해야한다는 것입니다.
생각하십니까?
당신이 생각해내는 해결책은 클래스 자체에 누락 된 기본 생성자의 중요성을 문서화하여 나중에 실행될 수도 있고 실행되지 않을 수도있는 테스트에 의존하지 않는 것이 좋습니다. 물론 다음 개발자는 그 주석을 무시할 수도 있습니다 :-) –
테스트는 빌드 서버에서 실행되어야합니다. 따라서 테스트가 실패하면 빌드가 중단됩니다. 개발자가 테스트를 실행하도록하는 것은 항상 잘못된 생각입니다. 지속적인 통합 없이는 단위 테스트가 작동하지 않습니다. – womp
@womp : 동의하지만 빌드 서버에서 실행되거나 개별 테스트가 여전히 활성화/비활성화 될 수는 없으며 이것이 내 요점이었습니다. 프로젝트의 다른 부분의 테스트가 영원히 계속 실행될 것이라는 것을 믿지 않는 것은 불합리하지는 않지만 보장되지는 않습니다. 최소한 수업 시간에 언급 된 내용을 통해 사람들에게 알릴 수있는 모든 노력을 기울이고 있습니다. 미래의 개발자가 특정 테스트의 존재와 관련된 "이유"를 알지 못하기 때문에 테스트 자체만으로는 충분하지 않을 수 있습니다. 모든 기지를 감추는 것이 내 생각이었습니다. –