9

Mam scenariusz, w którym mam dość złożony obiekt, który ładuję z bazy danych.Sposób na wzięcie obiektu w oknie oglądania i "Skrypt" to

Ten obiekt ma kilka zagnieżdżonych obiektów. Podczas debugowania znajduję wystąpienie tego obiektu, którego chciałbym użyć w teście jednostkowym. Teraz muszę ręcznie utworzyć ten obiekt. Ponieważ jest to dość skomplikowane, zajmuje mi to trochę czasu.

Mój czas testowania jednostki byłby lepiej wydany, gdyby był sposób, aby powiedzieć okno zegarka, aby wyprowadzić tę zmienną do okna tekstowego (lub schowka).

Wygląda na to, że wszystkie potrzebne informacje znajdują się w oknie podglądu.

Nie spodziewałbym się, że utworzy instrukcje użycia lub coś takiego, wystarczy użyć informacji o klasie, jakie posiada i utworzyć instrukcje new (zagnieżdżone na wielu poziomach, jak mój obiekt).

Czy istnieje takie narzędzie? (Jeśli nie może po prostu znalazł sposób, aby moje szczęście?)

+1

Spróbuj ** natychmiastowego ** okna i wypisz ** do debugowania ** podczas przechodzenia przez obiekt. Aby ułatwić sobie życie, możesz również przygotować sobie tę metodę przechodzenia, a następnie wywołać ją w bezpośrednim oknie, a następnie wypuścić ją do debugowania. I podczas gdy w nim, przekonwertuj go do JSON, a następnie użyj tego ciągu w kodzie testowym, aby przeanalizować go z powrotem do konkretnej instancji. Z ciągu JSON. Prawdopodobnie najprostsze rozwiązanie. –

+0

Ale możesz oczywiście go użyć i napisać rozszerzenie VS, które doda element menu kontekstowego do kliknięcia prawym przyciskiem myszy obiektu w oknie oglądania i powie: ** Wstaw JSON do schowka **. Jestem pewien, że wielu z nich chętnie go zainstaluje. Dokładnie z tego samego powodu, który podałeś. –

+0

+1 Moje pytanie DOKŁADNIE. – adamdport

Odpowiedz

2

Nie ma takiego narzędzia, które znam ... to jest bardzo skomplikowane, aby to zrobić, ponieważ:

  • obiekty mogą mieć referencje cykliczne , a zatem nie ma ograniczeń co do głębokości, na jaką można przejść
  • mogą istnieć odniesienia do pojedynczych obiektów
  • mogą istnieć odwołania do obiektów, które przyjmują parametr do konstruktora, w jaki sposób może on wiedzieć, jak skonstruować obiekt?
  • lub odniesienia do obiektów, które nie mają konstruktorów publicznych i są budowane przez fabryki zamiast
  • lub referencje do obiektów COM
  • lub referencje do obiektów, które mają sens tylko wtedy, gdy uruchomiony: strumienie plików np

Jedno łatwe rozwiązanie: sprawić, że obiekt będzie można serializować (na przykład do xml lub json), przekształcić go do postaci szeregowej, skopiować serializowany ciąg znaków do testu urządzenia, a następnie przekształcić go w test jednostkowy.

Nie tak proste rozwiązanie: wdrożyć wizualizera debugger, ze źródłem obiektu wizualizer: Debugger Visualizer and "Type is not marked as serializable"

W ten sposób można utworzyć okna i pokazać zserializowaną obiekt ... prawdopodobnie będziesz musiał użyć odbicie, aby odczytać wszystkie właściwości obiektu i obiekty podrzędne, i tak dalej.

+0

Cykli można uniknąć ... ale są one nieco bardziej pochłaniające pamięć ...;) –

+0

Unikanie cykli jest komplikacją ... ale wymieniłem kilka innych rzeczy, które mogłyby uniemożliwić stworzenie takiego narzędzia. –

+1

Więc jak to możliwe, że będziesz w stanie serializować to? Narzędzia do szeregowania seryjnego wykonują całą magię w taki sam sposób, jak każdy niestandardowy kod. Czy to XML, JSON czy jakakolwiek inna serializacja –

Powiązane problemy