2011-07-05 15 views
6

Używam dołączonych zachowań, aby dodać funkcję przeciągania i upuszczania do mojego kodu. Do tej pory wszystko działa dobrze, ale mój problem polega na tym, że chcę przetestować moje klasy zachowań.test jednostki wpf

Na przykład, jedna z klas zachowań byłoby coś jak poniżej:

public class DroppableContainerBehavior: Behavior<FrameworkElement> 
{ 

     protected override void OnAttached() 
     { 
      base.OnAttached(); 

      AssociatedObject.AllowDrop = true; 
      AssociatedObject.Drop += new DragEventHandler(AssociatedObject_Drop); 
      AssociatedObject.DragOver += new DragEventHandler(AssociatedObject_DragOver); 
      AssociatedObject.DragLeave += new DragEventHandler(AssociatedObject_DragLeave); 

     } 


     private void AssociatedObject_Drop(object sender, DragEventArgs e) 
     { 
    ... 
    }   
} 

Mój problem teraz jest, gdy chcę utworzyć badanej jednostki dla metody AssociatedObject_Drop, i musiałby stworzyć DragEventArgs obiekt, ale ta klasa jest zapieczętowana.

Odniosłem wrażenie, że robię coś źle .. Moje pytanie brzmi, czy powinienem testować moje zachowania? Zachowania są powiązane z interfejsem użytkownika i zwykle nie warto go testować. Czy mam rację? Może muszę zmienić kod zachowania, aby był bardziej sprawdzalny? jakieś pomysły?

Dzięki za pomoc!

Odpowiedz

4

Chciałbym zmienić kod i przenieść logikę biznesową z AssociatedObject_Drop do swoich własnych funkcji, a następnie napisać moje testy jednostkowe dla tych funkcji.

1
  1. można utworzyć obiekt, nawet jego klasa jest zaplombowana.

  2. można przetestować podwyższenia kroplę() zdarzeń w badanej jednostki

  3. można również przetestować AssociatedObject_Drop() logiki metody wydobycia przez swój kod do innych funkcji i napisać badanej jednostki dla tej funkcji.
+0

i czy wiesz, w jaki sposób mogę utworzyć obiekt, nawet jego klasa jest zaplombowana? –

+0

Zamknięta klasa nie może być dziedziczona, ale można utworzyć instancję tej klasy. zobacz http://msdn.microsoft.com/en-us/library/88c54tsw%28v=vs.71%29.aspx – Arseny

+1

um, przepraszam problem podczas robienia nowych DragEventArgs() nie jest zapieczętowany. Nie mogę utworzyć instancji, ponieważ konstruktor jest wewnętrzny. –

Powiązane problemy