정수 배열의 이진 검색과 관련된 몇 가지 방법이 포함 된 Java 클래스가 있습니다. 이제이 메소드의 정확성을 검증하는 새로운 클래스를 만들어야하며,이 메소드를 다른 배열과 찾을 다른 요소로 테스트하십시오. 지금은 "표준"방식으로 수행 한 새로운 클래스의 테스트이지만 JUnit을 사용할 수 있음을 알고 있습니다. 인터넷에서 몇 가지 쉬운 가이드를 검색했지만 많이 이해하지 못했습니다. BinarySearch.java "주"내 클래스가이 방법으로 만든 경우JUnit에 대한 의문과 제안
예를 들어, "표준"테스트 클래스는
public class BinarySearch {
private BinarySearch() { }
public static int find(int x, int[] a) {
int i = 0;
int inf = 0;
int sup = a.length - 1;
if(sup == -1 || x < a[0] || x > a[sup])
return -1;
while(inf <= sup) {
i = (inf + sup) >>> 1;
if(x < a[i])
sup = i - 1;
else if(x > a[i])
inf = i + 1;
else
return i;
}
return -1;
}
public static boolean isPresent(int x, int[] a) {
int i = 0;
int inf = 0;
int sup = a.length - 1;
if(sup == -1 || x < a[0] || x > a[sup])
return false;
while(inf <= sup) {
i = (inf + sup) >>> 1;
if(x < a[i])
sup = i - 1;
else if (x > a[i])
inf = i + 1;
else
return true;
}
return false;
}
public static void sort(int[] a) {
int b, c;
int temp;
int s = a.length - 1;
for(b = 0; b < s; ++b) {
for(c = 0; c < s; ++c) {
if(a[c] < a[c + 1]) {
temp = a[c];
a[c] = a[c + 1];
a[c + 1] = temp;
}
}
}
}
public static boolean isSorted(int[] a) {
for(int i = 0; i < a.length-1; i++) {
if(a[i] > a[i + 1]) {
return false;
}
}
return true;
}
public static void isort(int a[]) {
for(int i = 1; i < a.length; i++){
int j = i;
int b = a[i];
while(j > 0 && a[j - 1] > b) {
a[j] = a[j - 1];
j--;
}
a[j] = b;
}
}
}
입니다
:public class BinarySearchTestSuite {
private BinarySearchTestSuite() {}
static int tot = 0;
static int pass = 0;
static int nonPass = 0;
static int ecc = 0;
public static void main(String[] args) {
int[] a1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] a2 = {};
int x1 = 5;
int x2 = 0;
int x3 = 10;
System.out.println();
System.out.println("---- Test method find ----");
//Test n.1
try {
tot++;
System.out.print("Test n.1 - Array: [ ");
for(int i = 0; i < a1.length; i++)
System.out.print(a1[i] + " ");
System.out.println("]. Element to find: " + x1 + ".");
if(a1[BinarySearch.find(x1, a1)] == x1) {
System.out.println(x1 + " is in position " + BinarySearch.find(x1, a1) + ".");
System.out.println("Test OK.");
pass++;
}
else if(BinarySearch.find(x1, a1) == -1) {
System.out.println(x1 + " is not present in array");
System.out.println("TTest OK.");
pass++;
}
else {
System.out.println("Test FAIL.");
nonPass++;
}
} catch(Exception eccezione) {
System.out.println("Test FAIL.");
ecc++;
}
System.out.println();
//Test n.2
try {
tot++;
System.out.print("Test n.2 - Array: [ ");
for(int i = 0; i < a1.length; i++)
System.out.print(a1[i] + " ");
System.out.println("]. Element to find: " + x2 + ".");
if(a1[BinarySearch.find(x2, a1)] == x2) {
System.out.println(x2 + " is in position " + BinarySearch.find(x2, a1) + ".");
System.out.println("Test OK.");
pass++;
}
else if(BinarySearch.find(x1, a1) == -1) {
System.out.println(x1 + " is not present in array");
System.out.println("Test OK.");
pass++;
}
else {
System.out.println("Test FAIL.");
nonPass++;
}
} catch(Exception eccezione) {
System.out.println("Test FAIL.");
ecc++;
}
System.out.println();
//RESULT
System.out.println();
System.out.println("Test totali: " + tot);
System.out.println("Test andati a buon fine: " + pass);
System.out.println("Test falliti: " + nonPass);
System.out.println("Test falliti con lancio di una eccezione: " + ecc);
}
}
내가 어떻게 만듭니 까 JUnit 테스트 클래스? 간단한 예가 필요합니다. 나는 각각의 테스트 코드를 작성하는 방법이 코드 후
private final ByteArrayOutputStream outBuffer = new ByteArrayOutputStream();
private final ByteArrayOutputStream errBuffer = new ByteArrayOutputStream();
@Before
public void setupOutputStreams() {
System.setOut(new PrintStream(outBuffer));
System.setErr(new PrintStream(errBuffer));
}
@After
public void cleanupOutputStreams() {
System.setOut(null);
System.setErr(null);
}
:
내가 테스트 클래스에이 코드를 작성해야 알아? 그런 다음이 파일 (BinarySearchTest.java)을 컴파일하고 실행하십시오. 아니면 다른 방법이 있을까요? 조금 혼란 스럽네요 ...
고마워!
감사 단위 테스트 JUnit4에서 쉽게 작성
는
Junit 통합에 사용하는 IDE를 확인하십시오. 기본적으로 Junit 테스트를 실행하는 자체 프로그램을 작성하지 않지만 클래스를 확장하고 @Test로 테스트 메소드에 주석을 추가하고 Junit이 당신을위한 레그 워크를 수행하도록합니다. – TeTeT
[Unit Test 작성 방법] 가능한 복제본 (http://stackoverflow.com/questions/8751553/how-to-write-a-unit-test) – Joe