Kan iemand een code maken om te laten zien hoe testcode moet worden voorbereid?

Kan iemand in Java testcode maken voor onderstaande les? Ik zou graag willen zien hoe dit te bereiden. Kunnen we ons willekeurig voorbereiden?

public class SortString {

  public static void selectionSort(String[] s) {
    for (int toInd = s.length-1; toInd > 0; toInd--) {
      int indMax = 0;

      for (int k = 1; k <= toInd; k++) {
        if (s[indMax].compareTo(s[k]) < 0) {
          indMax = k;
        }
      }

      String temp = s[toInd];
      s[toInd] = s[indMax];
      s[indMax] = temp;
    }
  }


  public static void show(String[] s) {
    System.out.print('\n');

    for (int i = 0; i < s.length; i++) {
      System.out.print(" " + s[i]);
    }
  }


  public static void main(String[] args) {
    String[] s =  {"A", "Z", "C", "B", "1", "3", "2", "A", "C" };

    show(s);
    selectionSort(s);
    show(s);
  }

}
1
Umm wat?
toegevoegd de auteur Gabriel, de bron
Wat probeer je te testen? 'Testcode' is niet echt een generiek iets, maar moet ergens op zijn gericht. Ook, welk kader probeer je te gebruiken? JML? JUnit?
toegevoegd de auteur ewok, de bron
Het lijkt erop dat u uw code wilt testen. Dan zou een reeks van vaste arrays volgens mij beter zijn dan een willekeurig gegenereerde array. Op die manier zou uw test herhaalbaar zijn en zou u geen code hoeven te schrijven die zou valideren als die willekeurig gegenereerde array correct is gesorteerd. Misschien wilt u naar JUnit kijken om uw unit-test samen te stellen.
toegevoegd de auteur Laf, de bron

1 antwoord

Hier is een JUnit-test voor het testen van de hoofdletter ():

import org.junit.Test;
import static org.junit.Assert.*;

public class SortStringTest {
    @Test
    public void testSelectionSort() {
        String[] s = {"A", "Z", "C", "B", "1", "3", "2", "A", "C"};
        String[] expected = { "1", "2", "3", "A", "A", "B", "C", "C", "Z"};

        SortString.selectionSort(s);
        assertArrayEquals(expected, s);
    }
}

U wilt waarschijnlijk nog meer cases verzinnen om te proberen alle aspecten van uw implementatie te testen.

2
toegevoegd