Поскольку вы упомянули, что вы новичок, я добавлю здесь напоминание, что вы должны быть осторожны с тем, что вы проверяете.Вы хотите проверить свою логику, а не Windows.Чтобы сделать это, вам нужно разделить ваши проблемы на класс (или классы), которые содержат вашу логику, и классы, которые содержат оболочки (прокси) для используемых вами API - вы не тестируете API.Они работают, пока вы не докажете обратное.
Вы захотите проверить свои классы, а также заглушки или издевательства над прокси.В приведенном выше примере, если, например, вы используете команды Windows API для доставки своего решения, вы поместите команды, которые перемещают окно в класс WindowsProxy, и смоделируете вызовы, проверяя , чтовызовы к ним сделаны, но на самом деле они не выполняются в тесте.
Если вы используете .NET и Windows-Forms, или какую-то аналогичную инфраструктуру, вам нужно использовать шаблон, который поддерживает тестированиенапример MVP .Вы хотите написать свои тесты, чтобы использовать Presenter , одновременно заглушая или насмехаясь над View (ваше окно) и Model (любой API или объект домена).ты используешь).
Вот пример архитектуры:
public interface IView { ... }
public class View : IView
{
private Presenter _p;
View()
{
_p = new Presenter(this);
...
}
}
public class Presenter
{
presenter IView _v;
Presenter(IView view)
{
_v = view;
}
}
С помощью насмешливого фреймворка, например Moq , вы можете легко заглушить и смоделировать представление, а также протестировать докладчика (где все вашилогика будет проживать).С Moq вы можете иметь тестируемый класс для установки значений на макете, а затем проверить их значения (например, координаты окна).
Надеюсь, это поможет.Я трачу много времени на разработку пользовательских элементов управления на основе Win-Form и разработку их с помощью TDD.Это не невозможно и даже не сложно, как только вы освоите его.
Дайте мне знать, если вам понадобятся какие-либо дальнейшие разработки.
Ассаф.