2009-11-24 9 views
13

Pracuję nad makrem programu Excel VBA, który zajmie jakiś plik Excela, wyczyści go i wyczyści, a także utworzy skoroszyt z 2 arkuszami - arkusz 1 jest oryginalnym "brudnym" plikiem, a arkusz 2 jest czystym szorowanym plikiem.Jak ustawić test jednostki w makrze VBA Excel?

Ponieważ mamy teraz 10 różnych formatów, a następnie w dół drogi 40+ .. Chciałbym zapisać to wyjście dla danego zestawu plików, a następnie napisać test jednostkowy, który pobiera oryginalne dane wejściowe, uruchamia nasze makro, następnie porównuje wyjście makra z zapisanym, oczekiwanym wyjściem, które mamy.

Następnie, w dowolnym momencie po zakończeniu konserwacji, możemy szybko i łatwo przeprowadzić nasze testy jednostkowe, aby upewnić się, że nie złamaliśmy niczego, co już zadziałało.

To jest mój pierwszy kontakt z VBA. Szukałem go w poszukiwaniu frameworków lub wtyczek i nie mogę znaleźć dużej pomocy. Znalazłem funkcję, która porówna 2 całe arkusze kalkulacyjne Excela - więc mam tę część w dół. Ale teraz muszę wymyślić, jak faktycznie napisać i wykonać ten test jednostki. Pisanie testu jednostkowego powinno być całkiem proste - ale jak mam go wykonać? Nie chcę wstawiać przycisku w arkuszu kalkulacyjnym z napisem "uruchom testy jednostkowe" ... Czy jest jakiś sposób w VBA/Excelu, aby uruchomić dowolną funkcję, więc mogę po prostu kliknąć prawym przyciskiem myszy na funkcję UnitTest i zrobić 'biegać'?

Wszelkie dodatkowe informacje zwrotne na temat tego, jakie będą moje plany dotyczące testów jednostkowych. Dzięki jeszcze raz.

Odpowiedz

9

Gdyby mnie, chciałbym stworzyć drugi arkusz, który odwołuje się arkusz do przetestowania. (Przejdź do narzędzi> referencje> przeglądaj) Ten nowy skoroszyt może zawierać wszystkie potrzebne testy bez konieczności brudzenia głównego skoroszytu. Ułatwia to także zbudowanie interfejsu dla siebie, jeśli tego chcesz.

Na marginesie, jeśli chcesz ukryć procedur z makro menu programu Excel, ale mieć do nich dostęp, w górnej części modułu put:

Option Private Module 

Następnie dołożyć wszelkich procedur chcesz móc korzystać z "Public". Możesz wtedy wywołać je z bezpośredniego okna (ctrl-g w VBE), ale nie będą one wyświetlane na liście makr.

Ale jeśli utrzymasz swoje testy jednostkowe oddzielnie (tak jak prawdopodobnie powinieneś), to tak naprawdę nie musisz się martwić modułami Public/Private.

+0

Dzięki za wskazówkę na temat modułu prywatnego. – peege

5

nie spojrzał na nią od lat, ale vbaUnit wykorzystywane do dobrze działa ...

+0

dzięki, był już tego świadomy, ale nie był pewien, jak powinienem porównać arkusze. dzięki wszystkim – dferraro

1

Jasne, pod Developer Tab (Excel 2007) znajduje się przycisk Makra że listę wszystkich dostępnych makr, które można uruchomić . Wybierz z listy i kliknij Uruchom. Starsze wersje mają tę samą funkcjonalność, ale nie pamiętam, gdzie się znajdują.

Tu jest link do wersji 2003

http://spreadsheets.about.com/od/advancedexcel/ss/excel_macro_5.htm

8

Rubberduck to darmowy i open source dodatek VBE, który zawiera zintegrowane środowisko testowe IDE i działa na większości głównych produktów Office.

  1. Pobierz i zainstaluj latest release.
  2. Otwórz skoroszyt programu Excel, w którym znajduje się projekt VBA.
  3. Przejdź do opcji Tools >> Refrences i dodaj odwołanie do Rubberduck.
  4. Dodaj nowy moduł standardowy.
  5. Dodaj atrybut '@TestModule i utworzyć instancję Rubberduck.AssertClass

    `@TestModule 
    
    Private Assert As Rubberduck.Assert 
    
  6. rozpocząć pisanie testów. Każda Suba publiczna oznaczona atrybutem '@TestMethod zostanie odkryta i uruchomiona przez Eksploratora testów.

    '@TestMethod 
    Public Sub OnePlusOneIsTwo() 
        Assert.AreEqual 2, Add(1,1) 
    End Sub 
    

Unit Test Explorer

Aby uzyskać więcej informacji, zapoznaj się z Unit Testing page of the project's wiki.

Oświadczenie:Jestem jednym z twórców projektu.

+0

Świetna informacja. Co jest warte, instrukcje na połączonym wiki są bardziej aktualne niż instrukcje tutaj podane. – epotter