C#으로 WinForms 사용자 정의 컨트롤을 작성하고 테스트하고 싶습니다. (TDD가 아니기 때문에 구성 요소를 작성하고 작동시키면서 시작했지만 항상 버그를 발견하는 것에 지쳐있었습니다. , 그래서 나는 지금 시험을 원한다). 내 문제는 내가 테스트하는 동안 자식 컨트롤 (팝업 메뉴)을 볼 수 없도록 만들 수 없다는 것입니다. :WinForms 사용자 정의 컨트롤 - 자식 컨트롤이 숨겨져 있습니다.
가 여기에 관련 테스트 코드의 - (나는 가 표시하는 싶지 않아,하지만 난 여전히 정상적으로 실행 때이 나타날 것 있는지 확인하려면 나는 그것이 표시되지 않습니다 알고 있습니다.)
updater.Raise(it => it.StateChanged += null, AutoUpdaterState.Ok);
[주의 : 위의 내용은 이벤트를 발생시키는 Moq 코드입니다. . 그것은 바로 "메뉴가 발생 가시가 원인이됩니다 이벤트를"세부 사항을 무시하고 생각]
Assert.IsTrue(sut.checkToolStripMenuItem.Visible);
작동 그리고 여기에 컨트롤의 관련 코드입니다 :
이 checkToolStripMenuItem.Visible = true;
문제는 ...이 줄에 중단 점을 넣고 실행하면 Visible이 false로 유지됩니다. 아마 테스트 중이므로 메뉴가 실제로 보이지 않는다는 것을 이해합니다 ... 괜찮습니다. 어떻게 테스트합니까?
MVP 아이디어가 마음에 들지만, 실제로 "발표자가 [ShowPopupMenu()] 메서드를 호출 할 것"이라는 방법을 이해하지 못합니다. 그 방법은 공동 작업자가 아니라 발표자이기도합니다 (그래서 통화를 차단할 수 없음). 나는 깃발이나 뭐 추가 했니? –
흠, MVP에 대해 더 읽어야 할 것 같습니다. 저는 발표자가 view : P와 똑같지 않다는 것을 깨달았습니다. 발표자가 * view *에서 메서드를 호출한다고 말한 것입니다. 그래서, 나 자신을 위해 다시 말하면, 실제 UI 컨트롤 (뷰)을 관리하고이 발표자 만 테스트하는 UI가 아닌 의사 컴포넌트 (발표자)가 있어야한다고 옳은가요? 나는 그걸로 일할 수 있다고 생각해. –
예, 뷰에서 모든 것을 분리하므로보기가 간단하여 테스트가 필요하지 않습니다. MVP의 수동보기 및 감독 컨트롤러 맛보기를 선택합니다. –