Temel olarak, MVVM kullanıyorum ve genel ICommandları açığa çıkarırsam, delegelerimin herkese açık veya özel olması gerekir mi?WPF MVVM - Birim Bir komutu test etme - Özel vs Kamu yöntemleri?
cevap
- onlar Sınıfınızın public interface'un parçası değildir, genel ICommand özellikleri bunun için geçerlidir.
Şahsen, özel yöntemlerle giderdim ve nedenini anlatacağım. ICommand
'u açığa çıkarıyorsunuz, bu da tüketen görünümün bir Execute çağırmadan önce bir CanExecute çağırması gerektiğini söylüyor. Eğer yapmazlarsa, API'ye karşı çıkıyorlar ve kendilerini ayağa çekiyorlar ve o noktada elleriniz tükeniyor. Tıpkı birilerinin önemli bir özel değişkeni belirlemek için yansıma kullandığını sanki sınıf tasarımını bozup ... ... kendilerini ayağa fırlatmak gibi. Öyleyse üyeleri neden özel kılıyor? Çünkü doğrudan çağrılmaması gereken üyeleri ortaya çıkarmaya gerek yok. Eğer birim bunu bireysel olarak yapmayın üyelerini test ederken
Temelde, üyelerin yürütülecek API niyetinde şekilde yaparlar. Yani gerçekten üyelerini test etmezsiniz, ama dahası tekrar onlar belirli bir düzen içinde bir çift test edilmelidir demektir komutu, test ediyoruz: Onları özel kılacak
if (CanExecute)
{
Execute;
}
Oldukça düzenlemeyi yürütülmesi INotifyPropertyChanged davranış ve iCommand sınamak - ya da sadece bir şey mi kaçırdım ? :) –
@chibacity: Bazen rant yapmaya eğilimliyim. Daha önce benzer bir şeyden önce ünite testine geldiğimi sormuştum ve birisi bana eğer insanlar API'ye karşı geliyorlarsa, o zaman onlar üzerinde olduğunu söyledi. Birinin uygun bir kütüphane veya uygulamayı imha etmesini engellemek için bu kadar ileri gidebilirsiniz. –
Artış, azaltma düğmeleri ve Slider show değerinin basit kontrolü için MVVM kullanıyorum. Test iCommand ve INotifyPropertyChanged varsa
, sen UnitTest tür yapabilirsiniz: Gördüğünüz
[TestMethod]
public void TestViewModel3()
{
int min = -10;
int max = 10000;
int initVal = 50;
bool initState = false;
ToglledSliderModel model = new ToglledSliderModel(initState, initVal, min, max);
ToglledSliderViewModel viewModel = new ToglledSliderViewModel();
viewModel.Model = model;
int status = 567;
viewModel.PropertyChanged += delegate
{
status = 234;
};
for (int i = 1; i < 100; i++)
{
status = 567;
ICommand ic = viewModel.IncreaseValue;
ic.Execute(this);
Thread.Sleep(2);
Assert.AreEqual(status, 234);
Assert.AreEqual(model.SliderValue, initVal + i);
}
}
i
- 1. Birim Özel bir özellik sınıfını test etme
- 2. Özel MVVM uygulaması Vs. PRISM
- 3. birim ekli bir davranışı test edin wpf
- 4. Birim Test Etme ASP.Net MVC Server.UrlDecode
- 5. Açısal 2 JWT Birim Test Etme
- 6. WPF: MVVM
- 7. WPF, MVVM
- 8. Birim test özel modeli cilt 2
- 9. MVVM Foundation vs MVVM Toolkit
- 10. Birim Testi için Veri Dosyalarını Test Etme Yolu
- 11. nunit vs birim test çerçevesi yerleşik
- 12. ünitelerin soyut sınıflarını ve korunan yöntemleri test eden birimlerini test etme
- 13. WPF ICommand vs RoutedCommand
- 14. Bir birim testinde HTTPResponse alay Etme
- 15. Clojure veritabanı birimi test etme/alay etme
- 16. WPF DataGrid (MVVM) için ScrollIntoView (MVVM)
- 17. Birim testi İlkbahar AOP yöntemleri
- 18. Test WCF yöntemleri null
- 19. Basit WPF + MVVM bağlayıcı
- 20. WPF MVVM servis katmanı
- 21. WPF ve MVVM. Olaylar
- 22. WPF databind Image.Source MVVM
- 23. Kullanıcı arayüzünü MVVM WPF
- 24. MVVM WPF - Giriş Mantığı
- 25. MVVM Yönlendirilmiş ve Geçiş Komutu
- 26. WPF ve MVVM
- 27. Bir Test :: Birim :: TestCase
- 28. Birim MockMvc kullanarak Spring MVC'de test etme/oturum açma
- 29. Birim test sonucuna özel mesaj ekle
- 30. Android'de Event Bus tarafından yayınlanan birim test yöntemleri nasıl?
+1 Genel arabirimi sınayın. –
Sınıfımın bir arayüzü yok, ancak bir sınıf. – michael
@michael Bir sınıfta "kamu" yöntemlerinin ve özelliklerinin toplanması, tüketicilerin bu sınıfla nasıl etkileştiği gibi, sınıfın "arabirimi" olarak kabul edilir. – dlev