Test kodunu nasıl hazırlayacağınızı gösteren bir kod yazabilir mi?

Aşağıdaki sınıf için Java test kodunda kimse yapabilir mi? Bunu nasıl hazırlayacağımı görmek isterim. Rastgele hazırlayabilir miyiz?

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 ... ... ne?
katma yazar Gabriel, kaynak
Ne test etmeye çalışıyorsun? 'Test kodu' gerçekten genel bir şey değildir, ancak bir şeye doğru yönlendirilmelidir. Ayrıca, hangi çerçeveyi kullanmaya çalışıyorsunuz? JML? JUnit?
katma yazar ewok, kaynak
Kodunuzu test etmek istediğiniz gibi görünüyor. Sonra bir dizi sabit dizi, benim düşünceme göre rastgele oluşturulmuş olandan daha iyi olurdu. Bu şekilde testiniz tekrarlanabilir ve rastgele oluşturulmuş dizinin doğru şekilde sıralanıp doğrulanmadığını doğrulayacak kod yazmanız gerekmeyecektir. Birim testinizi oluşturmak için JUnit'e bakmak isteyebilirsiniz.
katma yazar Laf, kaynak

1 cevap

İşte ana yazdırdığınız vakayı test eden bir JUnit testi ():

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);
    }
}

Uygulamanızın tüm yönlerini test etmeye çalışmak için muhtemelen daha fazla dava açmak isteyebilirsiniz.

2
katma