zadanie - testy jednostkowe w javie

0

Witam.
Mam problem z poniższym zadaniem:

Poniższa metoda o nazwie szuk powinna sprawdzać, czy w tablicy *a *znajduje się szukany element k. Posiada ona jednak specjalnie popełnione błędy logiczne. Utwórz klasę testową i przy pomocy jej asercji, rozpatrując wszystkie możliwe przypadki logiczne dokonaj poprawnej modyfikacji kodu.

**public int** szuk**(int** [ ]t, **int** k) 
    { 
      **for**(**int** i=0; i<t.length-1; i++) 
          { 
            **if** (t[i] == k) 
             { 
              System.out.println("Element "+k+" znajduje się na  pozycji "+i); 
              **return** i; 
            } 
         } 
       **return** 0; 
    }

Prosiłbym o pomoc.

2

Z czym konkretnie masz problem?
Zrób tablice, zbadaj krańcowe przypadki(szukany element ma początku, końcu I pośrodku).
Ps
Ja już błąd widzę, a Ty?

0

@Aleksander32: nazwa tablicy zamiast t powinno być a

0

Ok, jakie przypadki Twoim zdaniem należy rozpatrzyć, by sprawdzić czy działa?

Jakie są możliwe scenariusze?

Co powinno się znajdować na wyjściu funkcji, która sprawdza, czy tablica zawiera dany element a co rzeczywiście zwraca?

3

Np. zrób taki test:

@Test
public void shouldReturnErrorWhenNumberNotInArray(){
    // given
    int[] array = ... // some logic to generate random array
    int value = ... // some logic to genreate value definitely NOT in the array
    // when
    int result = szuk(array, value);
   // then
   assertEquals(-1, result, "Element missing should be marked as impossible (negative) index");
}

Analogicznie wg takiego schematu możesz zrobić też inne testy. Sprawdź np. co się dzieje dla przypadków skrajnych (szukany pierwszy i ostatni element tablicy). Schemat jest prosty:

  1. Generujesz dane dla konkretnego przypadku który chcesz sprawdzić
  2. Uruchamiasz swój kod
  3. Sprawdzasz czy wyniki zgadzają sie z tym czego się spodziewałeś
0

podbijam temat jeszcze raz.... odpłatnie zrobił by to ktoś i mi wytłumaczył?

1

@Łukasz P: a próbowałeś zrobić cokolwiek samemu? Wątpię :(

Do wcześniejszych postów nawet się nie odniosłeś, gdybyś to zrobił powinieneś być w stanie ruszyć z zadaniem do przodu i przynajmniej odpowiedział sobie, co jest źle

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