Я знаю, что это, возможно, очень простой вопрос, но сейчас у меня немного пустого ума. Должен ли я проводить модульное тестирование этого класса.
public class MapinfoWindowHandle : IWin32Window
{
IntPtr handle;
public MapinfoWindowHandle(IntPtr mapinfoHandle)
{
this.handle = mapinfoHandle;
}
#region IWin32Window Members
IntPtr IWin32Window.Handle
{
get { return this.handle; }
}
#endregion
}
Если я должен быть, то зачем мне тестировать?
Пользуюсь вот так:
IntPtr handle = new IntPtr(100);
myform.show(new MapinfoWindowHandle(handle));





Единственное, что я могу видеть, - это убрать дескриптор, введенный через конструктор. Я знаю, что очевидно, что вы реализовали это таким образом, но тест убедит вас, что так и будет. Я бы проверил это только потому, что вы вводите его через конструктор. Если бы это было просто {получить; набор; } Я бы, наверное, не стал.
[TestMethod]
public void ConstructorTest()
{
IntPtr handle = new IntPtr(100);
MapinfoWindowHandle winHandle = new MapinfoWindowHandle(handle);
Assert.AreEqual( handle, ((IWin32Window)winHandle).Handle );
}
Прагматик во мне говорит «нет», потому что класс «ничего не делает», поэтому «нечего» проверять. Но вы все равно можете протестировать его только для целей документации и в качестве контракта для будущих разработчиков.
Код GUI, как известно, трудно поддается модульному тестированию. Я никогда не считал его слишком полезным в моих собственных приложениях. Просто держите бизнес-логику подальше от своего графического интерфейса, чтобы вы могли легко это проверить. Обычно я тестирую графический интерфейс с помощью ручных или автоматических интеграционных / приемочных тестов. Трудно написать тест, чтобы убедиться, что что-то «выглядит правильно».
Я бы обязательно протестировал попытку построить его с помощью NULL (0) или INVALID_HANDLE_VALUE (-1) и, вероятно, бросил бы его на любой / оба, если это необходимо (неясно, можно ли инициализировать класс с помощью IntPtr.Zero, но почти наверняка -1 будет недействительным.
да. Если класс стоит писать, стоит протестировать
Абсолютизм никогда никому не служил хорошо.
Вы ведь понимаете иронию этого заявления, не так ли?
В дальнейшем следует добавить тег <irony> :)
Да напиши тест. Если позже кто-то изменит код или добавит в него новый код, у вас будет хотя бы один тест, чтобы убедиться, что класс работает так, как он был задуман.
Но у класса есть один контракт, который можно протестировать. Параметр конструктора должен быть результирующим свойством. Тривиально, но проверяемо.