我是 Java 新手,所以這可能是一個幼稚的問題。我創建了一個Main
類像下面,我還想寫了一些測驗getArrays
,getAverage
和bubbleSortAscending
方法,只是為了學習如何做單元測驗的目的。
public class Main {
private static final Scanner scanner = new Scanner(System.in);
public static void main(String [] args) {
int[] myArrays = getArrays(5);
for (int i=0; i<myArrays.length; i ) {
System.out.println("index = " i " value = " myArrays[i]);
}
System.out.println("Average is " getAverage(myArrays));
int[] sortedArray = bubbleSortAscending(myArrays);
System.out.println("Sorted: \r");
for (int i=0; i<sortedArray.length; i ) {
System.out.println(sortedArray[i]);
}
}
public static int[] getArrays(int number) {
System.out.println("Enter " number " integer values.\r");
int[] values = new int[number];
for (int i=0; i<values.length; i ){
values[i] = scanner.nextInt();
}
return values;
}
public static double getAverage(int[] array) {
double sum = 0;
for (int i=0; i<array.length; i ){
sum = array[i];
}
return sum / (double) array.length;
}
public static int[] bubbleSortAscending(int[] array) {
for (int i=0; i<array.length-1; i ){
for (int j=0; j<array.length - i - 1; j ){
int a = array[j];
int b = array[j 1];
if (a > b) {
int c = a;
a = b;
b = c;
}
array[j] = a;
array[j 1] = b;
}
}
return array;
}
}
IntelliJ 自動為我生成了這些測驗代碼:
public class MainTest {
@org.junit.Test
public void getArrays() {
}
@org.junit.Test
public void getAverage() {
}
@org.junit.Test
public void bubbleSortAscending() {
}
}
但是,當我用這樣的代碼填充第一個時:
@org.junit.Test
public void getArrays() {
int[] expectedArray = new int[]{1,2,3,4,5};
int[] generatedArray = getArrays(5);
assertArrayEquals(expectedArray, generatedArray);
}
IntelliJ 告訴我出了點問題......
所以看起來是因為getArrays()
里面MainTest
沒有接受任何輸入引數?為什么getArrays()
inMainTest
與 中getArrays()
定義的不一樣Main
?
uj5u.com熱心網友回復:
問題是您遞回呼叫(錯誤地)測驗方法本身,它恰好與測驗方法具有相同的方法名稱。
測驗方法 ( MainTest.getTest()
) 與被測驗方法 ( Main.getTest(int)
)相反,沒有任何引數 - 因此會出現錯誤訊息,即您無法將 傳遞int
給該方法。
您必須通過指定類來呼叫經過測驗的靜態方法:
@Test
public void getArrays() {
...
int[] generatedArray = Main.getArrays(5); // Call getArrays(int) in Main class
...
}
或更改方法名稱,您可能會有不止一種測驗方法:
@Test
public void getArraysReturnsNull() { ... }
// OR
@Test
public void testGetArrays() { ... }
...
現在您可以使用靜態匯入并呼叫經過測驗的靜態方法而無需對類進行分類:
import static segovia.java.learn.Main.getArrays;
@Test
public void testGetArrays() {
int[] generatedArray = getArrays(); // OK now
}
智能提示:
按住 CTRL 鍵并單擊方法名稱。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396426.html