Testy jednostkowe , a obsługa wyjątków

0

Cześć wszystkim,

jak już w wcześniejszym wątku wspominałem jestem na początku drogi z Java jak i z programowaniem. Moja droga właśnie jest na etapie testów jednostkowych. Dokładniej mówiąc próbuję zrobić testy jednostkowe które obsługują wyjątek, a w sadzie go rzucają. Tylko problem polega na tym ,że nie bardzo wiem jak napisać test którego wynikiem miał by być rzucony wyjątek.

Test który próbuję napisać:

@Test(expected = NullPointerException.class)
    public void testMetodyScalaDwaSlowa_pierwszeSlowoNull(){
        ScalSlowa scalSlowa =new ScalSlowa();
        String a =null;
        String b = "testyJednostkowe";
    }

oraz metoda którą miał by test sprawdzać:

  public String scalaDwaSlowa(String a, String b)  {
        if (a.equals(null) || b.equals(null)) {
            throw  new NullPointerException();
        }
            return a + b;
    }
0

a.equals(null) jest bez sensu. To nigdy nie zwróci żadnej wartości, by wykonanie jakiejkolwiek metody na nullu kończy się NullPointerExceptionem. Jeśli chcesz sprawdzić czy w referencji a jest null to po prostu napisz a == null. Poza tym wygląda OK (przy założeniu, że rzucanie wyjątków jest OK). Na szybko w necie znalazłem takie metody testowania wyjątków: https://www.mkyong.com/unittest/junit-4-tutorial-2-expected-exception-test/

0

a czy przy używaniu wyjątku NullPointerException muszę mieć utworzoną dodatkową klasę tego wyjątku? czy import w klasie metody wystarczy?

0

Łapać bądź deklarować musisz tę samą klasę wyjątku, która jest używana przy rzucaniu go. Jeśli więc w kodzie jest rzucany java.lang.NullPointerException to ten sam wyjątek musisz zadeklarować przy łapaniu lub w adnotacji testowej.

Własnego NullPointerExceptiona nie ma sensu deklarować - jeśli wyjątki z JRE się nadają do konkretnego zadania to lepiej ich użyć niż tworzyć koło od nowa. Natomiast jeśli z jakiegoś dziwnego powodu chciałbyś stworzyć i rzucać własnego NullPointerExceptiona to musisz zadeklarować dokładnie niego np w adnotacji testowej.

0

ok dziękuje

1 użytkowników online, w tym zalogowanych: 0, gości: 1