Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu

W poszukiwaniu zadań testowych dla programistów Java natknęli się na ciekawą stronę (użytkownicy avast nie chodzą, skrypt Troyan jest określony, reszta najwyraźniej może być) - http://www.betterprogrammer.com. Sprawdza kwalifikacje programistów Java, najprostszy, ale automatyczny sposób: Oferowanie do pisania kilku funkcji (metod) zwiększenia złożoności i skopiowania kodu w Textarea. Następnie, witryna witryny ma coś z zadaniami (inaczej niż test jednostkowy), oblicza kryteria "prędkości jakości", określony wskaźnik kwalifikacji i kwestie ostateczne szacunki w tym formularzu:

Zaczynają się dalsze pytania. Ja sam program na Javie po raz drugi w moim życiu (a zatem trudne zadania po prostu podważone), więc 82% tego testu odpowiada poziomowi programista bez Java. Ile powinni mieć Java Junior, programista Java, a zwłaszcza Java Senior?! Jaki jest wynik oczekiwania teraźniejszość Java Programmer - 90, 95, 99? I wreszcie, jakby być, jeśli "programista" zyskuje mniej niż 82, ale mimo to roszczenia do pewnej pracy?!

Java jest obiektowym językiem programistycznym, opracowanym przez Sun Microsystems w 1991 roku. Początkowo język nazywał się Oak i był przeznaczony do programowania elektroniki użytkowej, ale później zmieniono Java. Oficjalna wersja Java w 1995 roku była bardzo udana i wkrótce po tym, jak język Java zajmował silne pozycje jako narzędzie do opracowywania aplikacji serwerowych.

Obecnie Java wykorzystuje we wszystkich obszarach rozwoju oprogramowania - aplikacje serwera., Aplikacje pulpitu, narzędzia, aplikacje internetowe - wszystko to opracowane przy użyciu Java i powiązanych technologii.

Docelowa publiczność testu Java

Test Java zawiera pytania, odpowiedzi, na które większość programistów znosi przy minimalnym doświadczeniu programowania na Javie. Test będzie przydatny dla wielu, w tym ludzi, którzy nie mają większego doświadczenia z Java i chce uzyskać minimalny pomysł podstawowych pojęć tego popularnego języka programowania. Test ten może być przydatny dla studentów uczenia się Java, aby skonsolidować wiedzę uzyskaną na Uniwersytecie-AH lub w wyniku niezależnej pracy.

Wymagania wstępne dla testu Java

Rozumie się, że przed przekazaniem testu na podstawach Java już znasz podstawową koncepcję, taką jak "zmienna", "cykl", "metoda" i znać składnię głównych struktur językowych. Jeśli tak nie jest, zalecamy zapoznanie się z podstawami Java, czytając kurs wprowadzający.

Struktura ciasta Java.

Test "Java - Fundamentale" oświetla następujące tematy:

Przeczytaj więcej o temacie pytań testowych, możesz przeczytać poniżej:

  • Przedmioty i zajęcia: Tematy te obejmują takie koncepcje jako klasa, instancja klasy (obiekt), projektantów, metod i pola klasy.
  • Składnia: Sekcja ta sprawdzą wiedzę na temat słów kluczowych języka, operatorów, głównych typów (prymitywy, ciągów), struktur sterujących (jeśli - inaczej, podczas gdy, dla), a także zrozumienie przetwarzania wyjątkowych sytuacji (wyjątek) .
  • Inne: Ta sekcja zawiera problemy związane z podstawowymi koncepcjami, terminami i skrótów, konwencjami klas nazewnictwa, zmiennych i metodami. W tej sekcji omówiono również pytania dotyczące plików (.java, .class, .jar) i pakietów, cykl witalności Obiekty, kolekcja śmieci.

Przejście testu online Java pomaga sprawdzić i skonsolidować wiedzę na temat podstaw Java, a także przynosi Ci przejście bardziej złożonych testów z sekcji testów Java.

Mamy nadzieję, że ten test będzie przydatny dla Ciebie i rozrywki.

Dalszy rozwój testu Java

Test Java jest stale aktualizowany z nowymi pytaniami.

W najbliższych planach zespołu, quizful - stworzenie testów poziomu ekspertów na Javie. Wciąż możesz być tworzony przez test Java Puzzlers, ale niestety jest bardzo powoli wypełnione pytaniami.

Jeśli nie masz komentarzy na temat pytań testowych, pamiętaj, abyś nas napisał. Powodzenia.

Testowanie jest daleko od zawsze zabawne i interesujące. Ten proces jest zwykle wystarczająco długi, a czasami pełen monotonnych prac. Wydaje się, że ostatnio programiści wykorzystali standardowe wyjście lub debuger do testowania klas Java.

W tym artykule opiszę bibliotekę Junit 4, która w dużej mierze upraszcza i automatyzuje proces pisania testów.

Aby zademonstrować główne możliwości ramy Junit, napisz prymitywną klasę w języku Java, a my się udamy. Ta klasa będzie miała dwie metody - znalezienie czynności numery negatywnej i sumę dwóch liczb. Ponadto licznik połączeń metodą będzie w instancji klasy.

Klasa publiczna Mathfunc (int rozmawia; publiczne int Getcalls () (powrót;) Publiczny długi czynnik (numer INT) (połączenia ++; if (numer 1) (dla (int I \u003d 1; I

Teraz pisz testy jednostkowe. Aby to zrobić, utwórz klasę z pewną liczbą metod testowych. Oczywiście klasa może zawierać konwencjonalne metody pomocnicze. Tak więc testy biegacze mogą określić, kto jest tym, którzy metody testowe muszą być oznaczone anntoment @test.

Dotkają się adnotacji takich parametrów:

  • oczekiwany - wskazać, który wyjątek zostanie wygenerowany przez metodę (patrz przykład poniżej);
  • limit czasu - po tym czasie w milisekundach, aby przestać wykonać test i policz go jako nieudany.

Jeśli chcesz określić, że pewny test jest niezbędny do pominięcia, a następnie zaznacz go za pomocą @ignore adnotacji. Chociaż możesz po prostu usunąć @test adnotacja.

Zdarza się, że spełnienie każdego scenariusza testowego, potrzebujesz pewnego kontekstu, na przykład, z wyprzedzeniem utworzone instancje zajęć. A po wykonaniu musisz wydać zarezerwowane zasoby. W takim przypadku będziesz potrzebował antonii @beFore i @After. Metoda oznaczona @beFore zostanie wykonana przed każdym obudową testową, a metoda oznaczona @Aft - po każdej sprawie testowej.

Jeśli inicjalizacja i zwolnienie zasobów powinny być wykonane tylko raz - odpowiednio przed i po wszystkich testach, a następnie użyj kilku adnotacji @beForeclass i @abterclass.

A oto klasa testowa z kilkoma scenariuszami testowymi:

Klasa publiczna Mathfuntistst (Private Mathffunc Math; @BeFore Public Void Sit Init () (Math \u003d New Mathfcunc ();) @After Publiczny Void Tenidown () (Math \u003d Null;) @Test Public Void Calls () (AsserTequals (0, Matematyka) .getcalls ()); Math.Factorial (1); AsserTequals (1, Math.getcalls ()); Math.Factorial (1); AsserTequals (2, Math.getcalls ());) @test Public Void Factalial () (AssertTrue (math.Factorial (0) \u003d\u003d 1); Asserttrue (math.Factorial (1) \u003d\u003d 1); AssertTrue (matematyki (Math.Factorial (5) \u003d\u003d 120);) @test (Extleded \u003d IllegalargumumException.Class) Publiczny void Factialnegative () (matematyka (-1);) @ Dignore @test Public Void Todo () (AssertTrue (math.plus (1, 1) \u003d\u003d 3);)))))))))))

Metoda połączeń testuje poprawność licznika połączeń. Metoda czynnikowa sprawdza prawidłowe obliczenia faktyczne dla niektórych standardowych wartości. Metoda faktoryjna sprawdza, że \u200b\u200bnielegalnydargumexception zostanie rzucony do ujemnych wartości fabryki. Metoda TOO zostanie zignorowana. Spróbuj usunąć adnotację @ Dignore, gdy eksperymentujesz z kodem.

Metoda assertTrue sprawdza, czy wynik wyrażenia jest poprawny. Niektóre inne metody, które mogą się podać:

  • aswertury - oczekiwany wynik i wynik pokryje;
  • asertNull - wynik wyrażenia jest null;
  • asertnotNull - wynik wyrażenia różni się od NULL;
  • asertSame - Oczekiwane i obiekty uzyskane są tym samym obiektem.
  • fail - metoda generuje wykluczenie asertionError - dodaj, gdzie nie należy osiągnąć wykonania programu.

W naszym współczesnym świecie IDE może znaleźć i po prostu uruchomić testy w projekcie. Ale co zrobić, jeśli chcesz ręcznie uruchomić je za pomocą kodu oprogramowania. Aby to zrobić, możesz użyć biegacza "Ohm. Istnieje tekst - Junit.Textui.testrunner, wersje graficzne - Junit.swingui.testrunner, Junit.awtui.testrunner.

Ale nieco bardziej nowoczesną metodą jest użycie klasy Junitcore. Dodaj następującą główną metodę klasy matematyki:

Publiczny statyczny Void Główny (String Args) rzuca wyjątek (Junitcore Runner \u003d Nowy Junitcore (); Wynik wyników \u003d Runner.Run (Mathfunctiont.Class); System.out.println ("Testy Uruchom:" + Wynik System.Out.println ("Nieudane testy:" + Wynik); System.out.println ("Ignorowane testy:" + Wynik. System.Out.println ("Sukces:" Wynik .było udane ());)

I wynik wykonawczy:

Badania Uruchom: 3 Nieudane testy: 0 Testy ignorowane: 1 Sukces: Prawda

W bardziej wczesne wersje. Junit, aby napisać klasę testową, konieczne było stworzenie dziedzic do jutit.framework.testcase. Następnie konieczne było zdefiniowanie projektanta akceptacji parametru łańcucha - nazwa metody - i przenieść go do klasy nadrzędnej. Każda metoda testowa była zobowiązana do rozpoczęcia prefiksu testowego. Metody konfiguracji i tedarown były używane do zainicjowania i bezpłatnych zasobów. Krótko mówiąc, horror. Cóż, teraz wszystko jest proste, tak.

To wszystko dzisiaj. Jestem pewien, że ramy Junit w dużej mierze pomogą Ci. Komentarze i pytania dotyczące artykułu są mile widziane.

Junit. - Biblioteka do testowania modułowego programy Java.. Stworzony przez Kent Beck i Eric Gamma, Junit należy do Xunit Framework Rodzina dla różnych języków programowania, pochodzących z Sunit Kent Beck na SmalTalk. Junit spawnował ekosystem rozszerzenia - JMock, EasyMock, DBUnit, Httpunit itp.

Biblioteka Junit. Został przeniesiony na inne języki, w tym PHP (Phpunit), C # (Nunit), Python (Pyunit), Fortran (Funkcja), Delphi (Dunit), Darmowy Pascal (FPCUNIT), Perl (Test :: Jednostka), C + + (CPPUNIT), FLEX (FLEXUNIT), JavaScript (Jsunit).

Junit. - Jest to rama Java do testowania, tj. Testowanie poszczególnych sekcji Kodeksu, na przykład metod lub klas. Doświadczenie zdobyte podczas pracy z Junit jest ważne w opracowywaniu koncepcji testowania oprogramowania.

Przykład ciasta Junit.

Importuj org.junit.test; Importuj Junit.framework.assert; Klasa publiczna MathTest (@Test Public Warequals () (Assert.asserTequals (4, 2 + 2); Assert.asserttrue (4 \u003d\u003d 2 + 2);) @Test Public Void Testnotequals () (Assert.assertfalse (5 \u003d \u003d 2 + 2);)))

Potrzeba korzystania z Junit

Junit pozwala szybko upewnić się, że praca kodowa jest szybko. Jeśli program nie jest bardzo prosty i zawiera wiele klas i metod, aby sprawdzić znaczny czas, aby sprawdzić. Oczywiście proces ten jest lepszy do automatyzacji. Za pomocą Junit. Umożliwia sprawdzenie kodu programu bez znacznego wysiłku i nie zajmuje dużo czasu.

Testy Yunit. Zajęcia i funkcje są rodzajem dokumentacji do tego, czego oczekuje się w wyniku ich wykonania. A nie tylko dokumentacja i dokumentacja, która może automatycznie sprawdzić kod zgodności z funkcjami. Jest wygodne, a często testy są opracowywane zarówno razem, jak i przed sprzedażą klas. Rozwój poprzez testowanie jest niezwykle popularną technologią tworzenia poważnego oprogramowania.

Rodzaje testów i miejsca testowania Junit w klasyfikacji

Testowanie oprogramowanie można podzielić na dwa typy:

  • testowanie czarnej skrzynki;
  • białe badania szuflady.

Podczas testowania programu jako czarne pudełko wewnętrzna struktura aplikacji nie jest akceptowana do obliczeń. Liczy się wszystkim, że funkcjonalność musi zapewnić. Podczas testowania programu jako białe pole należy wziąć pod uwagę wewnętrzną strukturę, tj. Klasa i metody. Ponadto testowanie można podzielić na cztery poziomy:

  • testy jednostkowe - Testowanie pewnych sekcji Kodeksu;
  • testowanie integracji - interakcja testowa i współpraca składniki;
  • testowanie systemowe - testowanie całego systemu jako całości;
  • odbieranie testów - ostatnie testowanie gotowego systemu zgodności.

Testowanie jednostki z definicji jest testowanie białego pudełka.

Używane testowanie jednostki w dwóch opcjach - Junit 3 i Junit 4. Rozważmy obie wersje, ponieważ 3rd wersja jest nadal używana w starych projektach, co obsługuje Java 1.4.

Junit 3.

Aby utworzyć test, klasa testowa Testcase powinna być dziedziczona, zastępuje metody konfiguracji i rozdarcia, jeśli to konieczne, najważniejszą rzeczą jest opracowanie metod testowych, których nazwa powinna rozpocząć się z "testem". Po uruchomieniu testu, klasa testowa jest pierwsza utworzona (dla każdego testu w klasie, oddzielną instancję klasy), wówczas metoda konfiguracji jest uruchomiona, sam test jest uruchomiony, a metoda Tedarown jest wykonywana. Jeśli którakolwiek z metod spowoduje wyjątek, test jest uważany za niepowodzenie.

Uwaga: Metody testowe muszą być nieważne, mogą być statyczne.

Testy składają się z wykonywania niektórych kodu i kontroli. Czeki są najczęściej wykonywane przy użyciu klasy Zapewniać. Chociaż czasami używaj słowa kluczowego assertu.

Przykładem, rozważ narzędzie do pracy z wierszami, w tym metody sprawdzania pustego łańcucha i reprezentującego sekwencję bajtów jako 16-rzeki:

Klasa publiczna Junit3stringTilstest rozszerza testccase (prywatna mapa końcowa Tohexstringdata \u003d nowa hashmapa (); Protectled Void Setup () Wyjątek Wyjątek (TohexstringData.put (", Nowy bajt); tohexstringdata.put (" 01020D112d7f ", Nowy bajt (1,2, 13 , 17,45,127)); TohexstringData.put ("00FFF21180", nowy bajt (0, -1, -14,17, -128)); // ...) Chroniony Void Tenidown () Wyjątek Wyjątek (TohexstringData. Clear ();) Publiczny void testtoHexstring () (dla (iterator iterator \u003d tohexstringdata.keyset (). Iterator (); iterator.hasnext ();) (Oczekiwany strun końcowy \u003d (string) iterator.następna (); końcowy bajt testdata \u003d (bajt) tohexstringdata.get; końcowy ciąg rzeczy rzeczywisty \u003d striputits.Tohekstring (testData); AsserTequals (oczekiwane, rzeczywiste);)) // ...)

Dodatkowe funkcje, testsuite

Junit 3 ma kilka dodatkowe funkcje. Na przykład można grupować testy. Aby to zrobić, użyj klasy Testsuite.:

Klasa publiczna Junit3stringutilstestsuite rozszerza testsuite (Stringutilsjunit3test.Class); Addtestsuite (Othertest1.Class); Addtestsuite (inneTest2.class);)))))

Możesz powtórzyć test testu kilka razy. W tym celu używany jest repetedtest:

Klasa publiczna Junit3stringutilsRepetedTest Extends RepettedTest (public Junit3stringutilsRepettedtest (Super (Super (), 100);))

Klasa testowa wchodzi z wyjątku, możesz sprawdzić kod do emisji wyjątku:

Klasa publiczna Junit3stringutilsexceptionTest Przedłuża wyjątkową (Super (ostatnia nazwa łańcucha) (nazwa, NULLPointPointPointException.Class);) Public Void TesttoHexstring () (Stringutils.ToHexstring (Null);)))

Jak widać z przykładów, wszystko jest dość proste i nic zbędnego - minimalny kod dla testowania Junit.

Junit 4.

W JUNIT 4 Dodano wsparcie dla nowych funkcji z Java 5.0; Testy można ogłosić za pomocą adnotacji. W tym przypadku jest kompatybilność wstecz poprzednia wersja Frazeswork. Prawie wszystkie przykłady omawiane powyżej będą działać w Junit 4, z wyjątkiem powtórzenia, który nie jest dostępny w nowej wersji.

Jakie zmiany pojawiły się w Junit 4? Rozważ ten sam przykład, ale już używasz nowych możliwości:

Klasa publiczna Junit4stringutilstest Extends Assert (Prywatna mapa końcowa Tohexstringdata \u003d New Hashmap (); @BeForeptoHexstringData () (TohexstringData.put ("", Nowy bajt); TohexstringData.put ("01020D112d7f", nowy bajt (1,2,13,17,45127)); tohexstringdata.put ("00ff21180", nowy bajt 0, -1, -14,17, -128)); // ...) @After publiczny statyczne void teardowntohexstringdata () (tohexstringdata.Clear ();) @test publiczny void testtohexstring () (map.entry. Wjazd: tohexstringdata.entrySet ()) (Ostateczne bajt Testdata \u003d Entry.GetValue (); Final String Oczekiwany \u003d Entry.GetKey (); Końcowy ciąg rzeczy rzeczywisty \u003d Stringutils.ToHexstring (TestData); AsserTequals (oczekiwany, rzeczywisty);)))))))))

Co zmieniło się w Junit 4?

  • Aby uprościć pracę, możesz odziedziczyć z klasy Zapewniać.Chociaż jest opcjonalny.
  • adnotacja @Przed. Wskazuje metody, które zostaną spowodowane przed wykonaniem testów. Metody muszą być pustka publiczna.. Oto zazwyczaj umieszczone ustawienia wstępne do testu, w naszym przypadku jest to generacja danych testowych (metoda setuptohexstringData.).
  • Możesz użyć adnotacji @Przed zajęciami.co oznacza sposoby, które zostaną spowodowane przed utworzeniem instancji klasy testowej; Metody muszą być publiczna nieważność statyczna.. Ta adnotacja (metoda) ma sens do wykorzystania do testowania w przypadku, gdy klasa zawiera kilka testów przy użyciu różnych ustawień wstępnych, lub gdy kilka testów wykorzystuje te same dane, aby nie spędzać czasu na ich tworzenie dla każdego testu.
  • adnotacja @Po. Wskazuje metody, które zostaną spowodowane po testowaniu. Metody muszą być pustka publiczna.. Oto operacje w celu uwolnienia zasobów po teście; W naszym przypadku, czyszczenie danych testowych (metoda teardowtohexstringData.).
  • adnotacja @Po zajęciach powiązany ze znaczeniem @Przed zajęciami.Ale wykonuje metody po klasie testowej. Jak w przypadku @Przed zajęciami., muszą być metody publiczna nieważność statyczna..
  • adnotacja @Test oznacza metody testowe. Jak poprzednio, te metody muszą być pustka publiczna.. Oto same czeki. Ponadto w tej adnotacji można użyć dwóch parametrów, oczekiwano - ustawia oczekiwany wyjątek i limit czasu - ustawia czas, po którym test jest uważany za nieudany.

Przykłady przy użyciu adnotacji z parametrami, testem Junit:

@Test (Exteded \u003d NullpointerException.Class) Public Void TesttoHexstringwrong () (Stringutils.Tohexstring (Null);) @test (limit \u003d 1000) Public Void Infinity () (while (true);)

Ignorowanie egzekucji testowej, Junit Ignoruje

Jeśli jeden z testów dla każdego poważnego powodu musi być wyłączony, na przykład test jest stale ukończony z błędem. Korekta testu może być przełożona do jasnej przyszłej adnotacji @Ignorować.. Jeśli umieścisz tę adnotację do klasy, wszystkie testy w tej klasie zostaną wyłączone.

@Ignore @test Odpada Nieskończoność (timeout \u003d 1000) Publiczne () (while (true);)

Reguły degustacyjne, Zasada Junit

Junit. Umożliwia korzystanie z zasad zdefiniowanych przez dewelopera przed i po wykonaniu testu, który rozszerza funkcjonalność. Na przykład, nie są wbudowane zasad ustalania limitu czasu Limit czasu, aby ustawić oczekiwany wyjątek (ExpectedException), do pracy z temporaryfolder i innych.

Aby zadeklarować regułę, musisz stworzyć publiczny nie statyczny. Metoderuł Pole pochodne i adnotuj go za pomocą słowa kluczowego Reguła.

public class JUnitOtherTest (@Rule publicznego folderu końcowy TemporaryFolder \u003d new TemporaryFolder (); @Rule public final Timeout Timeout \u003d new Timeout (1000); @Rule public final ExpectedException rzucony \u003d ExpectedException.none (); @Ignore @Test public void anotherInfinity ( ) (while (true);) @test public void testfilewriting () throws IOException ( "debug.log"); końcowy FileWriter Logwriter \u003d new FileWriter (log), Logwriter.append ( "Hello, "); logwriter.append (" WORLD !!! „); logwriter.flush (); logwriter.close ();) @test public void testExpectedException () throws IOException (thrown.class); Stringutils.ToHexString (NULL);))

Zestawy testowe, Apartament Junit, Suiteclasses

Rozpoczęcie testu można skonfigurować przez adnotację @Biegnij z. Zajęcia testowe zawierające metody testowe, można połączyć w zestawy testowe (Suite). Na przykład tworzone są dwie klasy testów obiektów: TestFilter, TestConnect. Te dwie klasy testowe można łączyć w jedną klasę testową Testwidgets.java:

Pakiet com.Objects; Importuj org.junit.runner.runwith; Importuj org.junit.runners.Suite; @RunWith (Suite.Class) @ suite.suiteclasses ((testfilter.class, testconnect.class)) TestWidgets public class ()

Aby dostosować testy rozpoczęcia, używany jest @suiteClasses, który obejmuje klasy testowe.

Kategorie adnotacji.

adnotacja Kategorie. Umożliwia połączenie testów w kategorii (grupy). Aby to zrobić, test określa kategorię @Kategoria.Po tym skonfigurowano wyzwalane kategorie testowe w apartamencie. Może to wyglądać:

Klasa publiczna JunitStringutilScategoriestest Rozszerza assert (// ... @Category (Unit.class) @test void testiosempty publicznego () (// ...) // ...) @RunWith (Categories.class) @ Categories.includecategory Jednostka .class) @ suite.suiteclasses ((junitothertest.class, junitstringutilscategoriest.class)) Klasa publiczna Junittestsuite ()

Adnotacja, parametryzowany Junit

adnotacja Sparametryzowany. Umożliwia używanie testów parametryzowanych. Aby to zrobić, klasa test jest uznany statyczną metodę, która zwraca listę danych, które będą używane jako argumenty klasy projektantów.

@RunWith (Parameterized.class) Klasa publiczna JUnitStringUtilsParameterizedTest rozciąga Assert (prywatnego końcowego CharSequence testdata; prywatny końcowy logiczna oczekiwano, JUnitStringUtilsParameterizedTest publicznych (końcowe CharSequence testdata końcowe logiczna spodziewane) (this.testData \u003d testdata; this.expected \u003d oczekiwana;) @Test Odpada TestiseMpty publicznego () (Final Boolean rzeczywista \u003d Stringutils.iseMpty (testdata); assertEquals (oczekiwane, rzeczywista);) @ Parameterized.parameters Publicznej statycznej listy IsemptyData () (powrót Array.aslist (New Object ((Null, True), ( "True), (" "False), (" sznurek”, False)))))

Parametryzacja metody: teorie.Class, Datapoints, Datapoint, Teoria

adnotacja Teorie Paramets metodę testową, a nie projektant. Dane są oznaczone @Punkty danych. i @Punkt danych., metoda testowa - przy użyciu @Teoria.. Test używa tej funkcji może wyglądać na coś takiego:

@Runwith (theories.class) Public Class JunitStringutilstheoryTest Rozszerza assert (@DataPoints public static Object IsemptyData \u003d new Object (( "true), (" "false) (" sznurek”, False)); @Datapoint ogólnodostępnych statycznego obiektu Nulldata \u003d nowy obiekt (NULL PRAWDA) @Theory brak testdata publiczny (końcowe logiczna rzeczywista \u003d Stringutils.isempty ((Charsequence) testdata; assertEquals (testdata, rzeczywista)))

Procedura przeprowadzania testów

Jeśli trzeba wykonać test w celu konkretnego, można użyć adnotacji @FixMethoderDer (methodsors.name_ascending) zdefiniowanych w JUnit 4.11. Na przykład:

@Fixmethodorder (methodsors.name_ascending) Klasa publiczna Mytest (@test public void test01 pasuje () (...) @test public void test02 () (...) ... @test public void test09 () (...) )

W przeciwnym razie można użyć następujących 2 podejść.

Void test01 (); void test02 (); ... Void Test09 (); @Test Publiczny Void Testorder1 () (Test1 (); Test3 ();) @test (Extioned \u003d Exception.Class) Publiczny Void Testorder2 () (Test2 (); Test3 (); Test1 ();) @test (Oczekiwany NullpointerException.Class) Public Void Testorder3 () (Test3 (); Test1 (); Test2 ();)

@Test Public Void TestalLders () (dla (Próbka obiektu: Permute (1, 2, 3)) (dla (indeks obiektu: próbka) .intvalue ()) (przypadek 1: Test1 (); ); Przerwa; przypadek 3: test3 (); przerwa;))))

Lista podstawowych adnotacji

adnotacjaOpis
@Test
Publiczny Void TestMethod ()
metoda jest testowa
@Test (limit \u003d 100)
Publiczny Void TestMethod ()
jeśli czas wykonania przekracza parametr limitu czasu, test zostanie zakończony bezskutecznie
@Test (oczekiwany \u003d myexception.class)
Publiczny Void TestMethod ()
metoda musi wyrzucić wyjątki od klasy MyException, w przeciwnym razie test zostanie zakończony bezskutecznie
@Ignorować.
Publiczny Void TestMethod ()
ignoruj \u200b\u200bmetodę testową
@Przed zajęciami.
metoda jest wywoływana raz na klasę przed wykonaniem metod testowych; Tutaj możesz umieścić inicjalizację, aby być wykonywane tylko raz, na przykład, przeczytaj dane, które mają być używane w metodach testowych lub utworzyć połączenie z bazą danych
@Po zajęciach
Publiczna statyczna testmethod ()
metoda nazywa się raz na klasę po wykonaniu metod testowych; Tutaj możesz umieścić deinitialization, które należy wykonać tylko raz, na przykład, aby zamknąć połączenie z bazą danych lub usunąć dane, które nie są już potrzebne.
@Przed.
Publiczna para statyczna BefoMethod ()
metoda jest spowodowana każdej metody testowej w klasie testowej; Tutaj możesz wykonać niezbędną inicjalizację, na przykład, aby ustawić parametry początkowe.
@Po.
Publiczna statyczna pustka aftermethod ()
metoda spowodowana po każdej metodzie testowej w klasie testowej; Tutaj możesz wykonać niezbędne deinitialization, na przykład usunąć dane, które nie są już potrzebne.

Aserts CHECKS List.

Rodzaj czeku.Opis
zawieść ()
Fail (komunikat strunowy)
ciasto przerwij z błędem, tj. Test będzie nieudany
aserttrue (warunek boolean)
AssertTrue (Java.lang.String Message, Claolean)
weryfikacja kondycji kondycji równości True Wartość
asertfalse (stan booline)
Asertfalse (komunikat łańcuchowy, warunki boolowskie)
weryfikacja Wartość stanu równości Fałsz
aswertury (<тип> Spodziewany,<тип> RZECZYWISTY)
AsserTequals (komunikat strunowy,<тип> Spodziewany,<тип> RZECZYWISTY)
sprawdź równość;<тип> - To jest obiekt, int, podwójny itp
asertarrayequals (spodziewane bajtowe, bajtowe rzeczywiste)
Asertarrayequals (komunikat strunowy,<тип> Oczekiwane,<тип> Rzeczywiste)
sprawdzanie tablic na równość; Podobny do asfermentacji;<тип> - To jest obiekt, int, podwójny itp
asertnotNull ( Obiekt obiektu.)
AssertnotNull (komunikat strunowy, obiekt obiektu)
sprawdź, czy obiekt nie jest null
asertNull (obiekt obiektu)
AsertNull (komunikat strunowy, obiekt obiektu)
sprawdź ten obiekt null
asertSame (Oczekiwany obiekt, rzeczywisty obiekt)
AsertSame (komunikat sznurkowy, oczekiwany obiekt, rzeczywisty obiekt)
sprawdzanie równości dwóch przedmiotów oczekiwanych i rzeczywistych, tj. jeden i ten sam obiekt

Przykładowe testy Junit.

Aby zademonstrować główne możliwości Junit, używamy prymitywnej funcmath klasy Java, która ma dwie metody - znalezienie czynności numerycznej liczby i sumę dwóch liczb. Ponadto licznik połączeń metodą będzie w instancji klasy.

Funcmath klasy publicznej (int połączeń; publiczne int Getcalls () (zwrotne połączenia;) Publiczny długi czynnik (numer) (połączenia ++; jeśli (numer< 0) throw new IllegalArgumentException(); long result = 1; if (number > 1) (dla (int i \u003d 1; ja< = number; i++) result = result * i; } return result; } public long plus(int num1, int num2) { calls++; return num1 + num2; } }

Czasami istnieje pewien kontekst do wykonania każdego scenariusza testowego, na przykład, wstępnie utworzone instancje zajęć. A po wykonaniu musisz wydać zarezerwowane zasoby. W takim przypadku adnotacje @beFore i @after. Metoda oznaczona @beFore zostanie wykonana przed każdym obudową testową, a metoda oznaczona @Aft - po każdej sprawie testowej. Jeśli inicjalizacja i wyzwolenie zasobów powinny być wykonane tylko raz - odpowiednio przed i po wszystkich testach, używają kilku adnotacji @beforeclass i @abterclass.

Klasa testowa z kilkoma scenariuszami będzie miała następującą formę:

Importuj org.junit.test; Importuj org.junit.After; Importuj org.junit.beFore; Importuj org.junit.astert; Importuj org.junit.afterclass; Importuj org.junit.beForeclass; Klasa publiczna Junit_funcmath rozszerza Asert (Private Funcmath Math; @beFore Public Void Sit () (Math \u003d New Funcmath ();) @After Public Void Tenidown () (Math \u003d Null;) @Test Public Void Call () (AsserTequals (" Math.getcalls ()! \u003d 0 ", 0, Dao.getConnection ()); matematyka (1); AsserTequals (1, matematyka (1); AsserTequals (2, matematyka. Getcalls ());) @Test Publiczny Faktoryjny () (AssertTrue (Math.Factorial (0) \u003d\u003d 1); AssertTrue (Math.Factorial (1) \u003d\u003d 1); Asserttrue (math.Factorial (5) \u003d\u003d 120);) @test (Extleted \u003d IllegalAlargumentException.Class) Publiczny void Factialnegative () (math.factorial (-1);) @ignore @test Public Void Todo () (Asserttrue (math.plus (1, 1) \u003d\u003d 3);))

Metoda połączeń testuje poprawność licznika połączeń. Metoda czynnikowa sprawdza prawidłowe obliczenia faktyczne dla niektórych standardowych wartości. Metoda faktoryjna sprawdza, że \u200b\u200bnielegalnydargumexception zostanie rzucony do ujemnych wartości fabryki. Metoda TOO zostanie zignorowana.

Podsumowując, należy zauważyć, że artykuł przedstawia nie wszystkie możliwości korzystania z Junit. Ale jak widać z powyższych przykładów, ramy są dość łatwe w użyciu, istnieje kilka dodatkowych funkcji, ale istnieje możliwość rozbudowy przy użyciu reguł i przystawek.

Wierzę, że rozwój oprogramowania jest więcej niż praca. Widzę sobie rzemieślnika, która próbuje stać się lepszym codziennie. Najbardziej "prosty" sposób na to jest znalezienie dobrych narzędzi i odpowiedz na następujące pytania:

  • Kiedy powinienem użyć narzędzia X?
  • Jak powinienem użyć narzędzia X?

Zautomatyzowane testowanie jest bardzo ważną częścią rozwoju oprogramowania, ale na blogach programistów kilka postów o używanych narzędzi. Ten sam artykuł pozwoli Ci spojrzeć w moje "pudełko z narzędziami". Porozmawiam o 12 bibliotekach i ramach, których używam do pisania testów jednostek i integracji, a także podawać linki do stron, które pomogą Ci zrozumieć, jak ich używać.

Spójrz w moje pudełko z narzędziami

Zanim będziesz mógł korzystać z opisanych poniżej narzędzi, musisz skonfigurować montaż, który automatycznie uruchamia integrację i testy jednostkowe. Mam 2 notatki na ten temat:

  • Testowanie integracji z Maven opisuje, w jaki sposób możemy skonfigurować montaż Maven z integracją i testami jednostek w różnych katalogach.
  • Pierwsze kroki z gradlem: Testowanie integracji z wtyczką testsetów opisuje to samo dla gradle.

Teraz jesteś gotowy spojrzeć na moje narzędzia bliżej. Podziałem je w kategorie, aby ułatwić nawigację.

Oto 12 narzędzi, których używam z integracją i testami jednostek.

Rozpoczęcie testów

Assertj Zapewnia elastyczne interfejsy API do zapisu instrukcji przydatnych komunikatów o błędach, poprawia czytelność kodu testowego, umożliwia obrócenie testów do specyfikacji wykonywalnych, które przylegają do żądanego języka zorientowanego na tematykę.

Dodatkowo:

  • Korzystanie z HACKRest w testowaniu mówi, jak używać HACKRest do pisania testów, a także jak rozszerzyć swoje możliwości za pomocą niestandardowych modułów.
  • Odnosimy się w zgodę na język obiektowy, mówi, jak tworzyć niestandardowe oświadczenia w Assertj.
  • Piszemy czyste testy: wymiana zarzutów zorientowany język. Opowiada, dlaczego musimy zastąpić standardowe oświadczenia Junit z naszym własnym, który wykorzystuje wierny język obiektywny.

Testowanie kodu dostępu do danych

Szybka baza danych, przydatna do pisania testów integracyjnych, które działają na lokalnej maszynie deweloperskiej.

Przedłużenie dla Junit, które można wykorzystać do zainicjowania bazy danych do określonego stanu przed wykonaniem każdego testu integracji i wypełnienie bazy danych z niezbędnymi danymi. Dbunit ma swoje wady, ale jest bardzo użyteczne narzędziepozwalając na podział danych testowych i kodu testowego.

Dodatkowo:

  • Opisuje kluczowe elementy DBUnit, której wiedza jest niezbędna do pisania testów przy użyciu DBUnit.
  • Zapewnia pięć zasad ortograficznych dla najlepszych testów do kodu dostępu do danych.

Dzwon.

Są ci, którzy przeczytali tę wiadomość przed tobą.
Subskrybuj odbieranie artykułów świeżych.
E-mail
Nazwa
Nazwisko
Jak chcesz przeczytać dzwonek
Bez spamu