2008-12-09 4 views
1

Я знаю, это может быть очень простой вопрос, но у меня сейчас немного ума. Должен ли я быть модульным тестированием этого класса.Должен ли я тестировать этот класс?

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)); 

ответ

4

Единственное, что я могу видеть, убедившись, что вы получите из ручки, что вы кладете в с помощью вашего конструктора. Я знаю, что очевидно, что вы реализовали его таким образом, но тест убедит вас, что он остается таким. Я проверил бы это только потому, что вы вводите его через конструктор. Если это было просто {get; задавать; } Я, вероятно, не стал бы.

[TestMethod] 
public void ConstructorTest() 
{ 
     IntPtr handle = new IntPtr(100); 
     MapinfoWindowHandle winHandle = new MapinfoWindowHandle(handle); 
     Assert.AreEqual(handle, ((IWin32Window)winHandle).Handle); 
} 
0

Прагматист во мне говорит «нет», потому что класс ничего не делает, поэтому «ничего» не проверять. Но убедитесь, что вы все еще можете проверить его, только для целей документации, и в качестве контракта для будущих разработчиков.

+0

Но у класса есть один контракт, который можно протестировать. конструктор должен быть результирующим свойством. Тривиальный, но проверяемый. – JaredPar 2008-12-09 06:17:14

0

Код GUI, как известно, трудно тестировать. Я никогда не считал его слишком полезным в своих приложениях. Просто держите свою бизнес-логику вне своего графического интерфейса, чтобы вы могли легко проверить это. Обычно я тестирую код gui с помощью либо ручных, либо автоматических тестов интеграции/приемочного тестирования. Трудно написать тест, чтобы убедиться, что что-то «выглядит правильно».

2

Я бы наверняка испытал попытку построить его с помощью NULL (0) или INVALID_HANDLE_VALUE (-1) и, возможно, набросал бы его/оба, если это было необходимо (неясно, нормально ли инициализировать класс с помощью IntPtr .Zero, но это почти наверняка, что -1 будет недействительным.

+0

+1 Удостоверьтесь, что вы не можете установить IntPtr в недопустимое значение – 2008-12-09 05:47:32

+0

+1 хорошие очки, забыли про это – 2008-12-09 06:13:10

1

Да. Если класс стоит писать, то стоит попробовать

0

Да написать тест. Если кто-то позже изменяет код или добавляет некоторые новый код для этого, у вас есть хотя бы один тест, чтобы убедиться, что класс работает так, как он был предназначен.

Смежные вопросы