Niedawno po raz pierwszy w życiu musiałem mockować implementację interfejsu IEnumerable<T>. Chodziło o jakieś dziwne struktury używane wewnętrznie przez FIM. Problem polegał na tym, że obiekt mockowanego przeze mnie typu zwracał kolekcję innych obiektów. Ta kolekcja była właśnie IEnumerable<X>... ale nie mogłem stworzyć jej instancji, ponieważ wspomniana klasa XCollection była abstrakcyjna, a jej implementacja siedziała zaszyta gdzieś wewnątrz jakichś dllek. Jednocześnie chciałem przetestować...
Strona głównaUżytkownik
Paweł Łukasik | użytkownik
Odpowiedź na pytanie postawione w tytule pytanie to temat nie na posta, ale na całą (może nawet niejedną) książkę. Poniżej postaram się nakreślić najważniejsze według mnie aspekty tworzenia testów... chociaż na pewno lista ta nie jest kompletna. Aha, no i nie jestem w stanie podać niezawodnej recepty na "dobry test". Zgłębiam temat od dobrych kilku lat i sam ciągle się uczę, więc cudów nie ma - praktyka i identyfikowanie własnych pomyłek jest najlepszym nauczycielem:).
Nie dawno otrzymałem email z pytaniem dotyczącym tworzenia dokumentacji do kodu napisanego w C#: Poszukuje czegoś do zautomatyzowania procesu tworzenia dokumentacji dla kodu pisanego w C# i trafiłem na (..) temat odnośnie Sandcastle. Czy ten dodatek do Visual Studio pozwala tworzyć dokumentacje dla C# i jest kompatybilny z VS 2010? Spróbuję w niniejszym wpisie odpowiedzieć na to pytanie. Na temat tworzenie dokumentacji do oprogramowania pisałem już wcześniej w artykule „Tworzenie dokumentacji”. Wspomni...
Moment pisania testów jest nierzadko kluczowy dla zmaksymalizowania efektywności całej procedury. Po kilku chwilach zastanowienia da się wyróżnić kilka najważniejszych etapów tworzenia oprogramowania, które z reguły są odpowiednią chwilą do implementacji testu.
Post navigation← PreviousPułapki w SQL Server CEOpublikowano 7 Grudzień 2011 Ostatnio mam okazję robić projekt, do którego używam WebMatrix i bazę Microsoft SQL Server CE (Compact Edition). Docelowo baza ma być przeniesiona do „dużego” SQL’a, a ten CE miał być tylko na chwilę, na początek, na szybko…Subselect / subquery SQL Server CE nie obsługuje Subselectów. Nie możemy zrobić takiego zapytania:SELECT c.FirstName, c.LastName, (SELECT count(o.id) FROM Order o WHERE o.CustomerId = c.Id) AS Ord...
Bazy danych i XML 4794 dni, 22 godziny, 8 minut temu 165 źrodło rozwiń
W ramach serii postów dotyczących Reactive Extensions przyjrzeliśmy się już problemom związanych z asynchronicznością oraz przyjrzeliśmy się bliżej kolekcjom i wzorcu obserwatora (IObserver, IObservable). W tym wpisie zobaczymy pierwszy przykład kodu wykorzystującego RX. Jak wspominałem wcześniej, w .NET 4.0 jest wbudowane pewne wsparcie dla IObserver i IObservable. Jednak są to tylko definicje wspomnianych interfejsów, aby wykorzystać pełne możliwości RX, trzeba je zainstalować i dołączyć do projektu, w...
Programowanie rozproszone 4806 dni, 12 godzin, 6 minut temu 71 źrodło rozwiń
W ramach kontynuacji tematyki związanej z Reactive Extensions (RX)przyjrzyjmy się elementom, które stoją u podstaw ich działania, czyli kolekcjom i wzorcowi Obserwator. W poprzedniej części artykułu poznaliśmy cel przyświecającym twórcom Reactive Extensions (RX) jak i skąd można pobrać wspomniane rozszerzenia. Skoro już mamy zainstalowane Reactive Extensions (Rx), zacznijmy przyglądać się jego możliwością.Jak wcześniej zostało wspomniane, Rx upraszcza programowanie asynchroniczne, pozwala na łatwe filtr...
Programowanie rozproszone 4807 dni, 14 godzin, 30 minut temu 125 źrodło rozwiń
Jako że nie dawno przedstawiłem na spotkaniu Łódzkiej grupy profesjonalistów IT & .NET prezentację poświęconą „Wprowadzenie do Reactive Extensions (RX) dla .NET” (patrz informacja: Zapraszam na prezentację: "Wstęp do Reactive Extensions dla .NET (RX)" oraz Prezentacja i kod ze spotkania pt.: "Wprowadzenie do Reactive Extensions (RX) dla .NET" [PL]). Postanowiłem czytelnikom bloga „Programowanie i Technologie” również przybliżyć temat Reactive Extensions, więc jeżeli zdarzyło Ci się tworzyć aplikacje...
Programowanie rozproszone 4807 dni, 14 godzin, 30 minut temu 157 źrodło rozwiń
Generator haseł z możliwością parametryzacjilis 21 2011 9:48 W końcu nadszedł ten dzień, kiedy metoda Membership.GeneratePassword przestała mi wystarczać. Zawiedziony niewystarczającymi możliwościami tego generatora napisałem poniższy kawałek kodu:using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using Olsoft.Common.Extensions; namespace Olsoft.Common.Security { public interface IPasswordGenerator { string Generate(int length)...
Analiza aplikacji .NET Zestaw narzędzi do analizy .NET-owych aplikacji znacznie różni się od klasycznych narzędzi dla zwykłych aplikacji x86 / x64, odmienna architektura kodu wymusiła utworzenie całej gamy dedykowanych narzędzi dla plików wykonywalnych .NET, spróbuję przedstawić kilka z nich, które mogą się przydać w reversingu.Dekompilacja kodu Pierwszym i podstawowym narzędziem, które chyba zna większość osób zajmujących się analizą oprogramowania i nie tylko jest dekompilator .NET Reflector..NET Refle...
W ramach uczestnictwa w kursie WPF czytam ksiązkę "WPF 4 Unleashed" i przygotowuje jakieś przykłady sprawdzające co tam pan autor pisze w tej książce. Jeden z początkowych rozdziałów (tak, dopiero rozpoczynam kurs i książkę) poświęcony jest tematyce transformacji kontrolek, w związku z tym napisałem prosty przykład ukazyjący omawiane tranformacje. W zasadzie testuje tylko trzy z pięciu, ponieważ przesunięcie obiektów nie jest zbyt widowiskowe, a wykorzystanie macierzy nie jest na moją głowę. Zostają tylk...
Chcąc wyświetlić na naszej stronie wykres wartości, możemy skorzystać z Silverlighta lub javascriptu. Możliwści silvrlighta podczas tworzenia wykresów prezentowałem w jednym z wcześniejszych postów. Teraz pokażę w jaki sposób można za pomocą JSONa i biblioteki jQPlot wyświetlić wykres dla pewnych wartości (np. pobranych z bazy danych). Ze strony http://www.jqplot.com/ pobieramy bibliotekę jQPlot. Po pobraniu dodajemy pliki pluginu do naszego projektu: Następnie dodajemy odnośniki do bibliotek jQue...
2lis/110Debugowanie Visual Studio Dziś postaram się przybliżyć rzadko stosowaną technikę wyszukiwania błędów w kodzie. Polega ona na użycia drugiej instancji Visual Studio do znalezienia błędów w pierwszej. Patrząc na ostatnie zdanie można zacząć się zastanawiać jak szukanie błędów w Visual Studio może pomóc w znalezieniu błędów w naszym programie. Należy zdać sobie sprawę, że tak naprawdę Visual Studio zawiera w sobie nasz kod. I naszym celem jest prześledzenie działania tego kodu. Sztandarowym przykład...
W poprzednim poście wspomniałem o mojej walce w Mono Cecil, dzisiaj chciałbym się podzielić moimi wrażeniami i doświadczeniem. Dodam tylko, że o Mono usłyszałem na spotkaniach wrocławskiej grupy .net, wykład prowadził Paweł Łukasik, slajdy z wykładu dostępne są na jego blogu: http://pawlos.blogspot.com. Jak zwykle zapraszam na spotkania i wykłady. Źródła które pokaże, są tylko prostym przykładem, zamysłem tego co chciałem zrobić w docelowym rozwiązaniu. Powinny jednak wystarczyć by ukazać jak działa Mon...
Ignorancja to słabość Ostatnio przeglądałem T-SQL kod w którym została użyta pewna siermiężna acz użyteczna konstrukcja (użyteczna w poprzednich wersjach SQL Server'a, tak od 2005 w dół). Zapytałem się autora kodu, czy przypadkiem nie używają MS SQL Server 2008, otrzymałem pozytywną odpowiedź "nawet w wersji R2". Kod który prezentuje ogólny zarys problemu znajduje się poniżej. Przykłądowa implementacja wstawia rekord do tabeli jeśli jeszcze on nie istnieje, w innym wypadku aktualizuje wartości wybranych...
Bazy danych i XML 4833 dni, 15 godzin, 56 minut temu 258 źrodło rozwiń
Znam się z NULL'em od lat Oglądając materiały z Introduction to Databases, przypomniały mi się koszmary z dzieciństwa. Zdarzyło mi się wspierać jako programista bądź inżynier support'u kilka systemów używających MS SQL Server'a (każdy z nich był rozwijany przynajmniej 5 lat). Miały one kilka cech wspólnych , jedna z nich sprawiła mi sporo problemów przy rozwijaniu i utrzymywaniu tych systemów. Posiadały one dużo tabel w których definicje kolumn umożliwiały wstawianie wartości NULL. Poniższa definicja ...
Bazy danych i XML 4855 dni, 17 godzin, 32 minuty temu 297 źrodło rozwiń
"Cześć, dziś dla odmiany będzie polski tekst- zagadka o synonimach :) . Mamy taką zagadkę jest tekst z wstawkami {typu|rodzaju} z {synonimami|znaczeniami} i trzeba go przetransformować losowo wybierając synonimy. Udało mi się to zrobić ze złożonością O(n) ale walka na jednym forum w Internecie była fajną i udało się zoptymalizować dosłownie wszystko, tak myślę, oceńcie sami."
Lista (aktualizowana) screencastów programistycznych. Nie tylko .NET, ale warte przyjrzenia się.
Tworząc programy, bardzo często wykorzystuje się różne biblioteki stworzone przez inne osoby. Dopóki kod jest tworzony na potrzeby własne, nie patrzy się na to jak zostały przygotowane użyte biblioteki. Pierwszy momentem, kiedy zaczyna się zwracać na to uwagę jest podjecie decyzji o publikacji rozwiązania dla większego grona odbiorców. W tym momencie zaczynają się pojawiać myśli o zabezpieczeniu kodu. Najprostszym sposobem...
Bardzo prosty przykład pobrania danych. Prosty przykład na prostych danych czyli standardowo mamy stringa i inta. Sama nienawidzę takich przykładów bo jeśli cokolwiek dołożymy przestają działać. Bez obaw - dokładać będziemy później.
Programowanie rozproszone 4919 dni, 15 godzin, 44 minuty temu 127 źrodło rozwiń