При юнит-тестировании мы тестируем юнит - в данном случае пользовательский контроль.И больше ничего.Но мы не должны позволять пользовательскому контролю получать доступ к внешнему миру, мы должны использовать методы насмешек.Например, если ваш UserControlA вызывает UserControlB, создайте интерфейс для UserControlB и замените его на фиктивный UserControlB:
class UserControlA {
UserControlBInterface BReference;
public void setBReference(UserControlBInterface reference) { this.BReference = reference };
void OnClick (...) { BReference.callAMethod(); }
}
class MockupForB : UserControlBInterface {
boolean called=false;
public void callAMethod() { this.called = true; }
}
class TesterA : UnitTest {
public void testOnClick()
{ UserControlA a = new UserControlA(); MockupForB mockup = new MockupForB(); a.setBReference(mockup);
a.Button1.PerformClick(...); //following Aaronontheweb's advice
assertTrue(mockup.called,"the method callAMethod not being called by UserControlA");
}
}
И чтобы UserControlB действительно вызывал справочную библиотеку, это относится к модульному тесту для UserControlB.