2017-04-20 32 views
-3

我與Eclipse的工作,而且,我不知道爲什麼的方法,但所有我寫的方法都以紅色標記:的assertEquals和主

import java.util.Arrays; 

public class Main { 

    public static void main(String[] args) { 
     testExpandArray(); 
     testShiftElements();   
     testZero(); 
     testNonZero(); 
     testIncDec(); 
    } 

    //Aufgabe 1 
    public void testExpandArray() { 

      String[] a = {"a", "b", "c"}; 
      String[] b = Arrays.expandArray(a); 

      assertEquals(b.length, 2*a.length); 

      for (int i = 0; 1 < a.length; i++){ 
       assertEquals(a[i], b[i]); 
      }   
     } 

    public void testShiftElements(){ 
     String[] a = {"a","b","c"}; 
     String[] b = a.clone(); 
     int i = 1; 
     Arrays.shiftElements(a, 1); 

     for (int j = 0; j<1; j++){ 
      assertEquals(b[j], a[j]); 
     } 
     for (int j = 1; 1 < a.length-1; i++){ 
      assertEquals(b[j], a[j+i]); 
     } 
    } 



    //Aufgabe 2 
    public void testZero(){ 
     assertEquals(0, new Counter().get()); 
    } 

    public void testNonZero(){ 
     Counter c = new Counter(); 
     c.inc(); 
     assertNotEquals(0, c.get()); 
    } 

    public void testIncDec(){ 
     Counter c = new Counter(); 
     int n = c.get(); 
     c.inc(); 
     c.dec(); 
     assertEquals(n, c.get()); 
    } 

} 

所以我必須打電話給我的班Junit而不是Main?我做到了,沒有任何改變。我也進口了java.util.Arrays,沒有任何改變。 我有另一個類:Arrays,與方法expandArrayshiftElements。現在這些也是紅色的,我不能給他們打電話。這些是不確定的類型陣列(?)

執行方法必須是靜態的?主體之外?

+3

您有主(字符串[] args)方法裏面所有的方法..... – Mechkov

+1

另外,導入類org.junit.Assert ,然後調用'Assert.assertArrayEquals()'。 –

+0

@azurefrog:這似乎更像是一個打字錯誤,而不是有意要在'main'中實現方法。 – Makoto

回答

0

應關閉的主要方法,並從中調用其他方法。在你的情況下,你已經寫了一些方法在你的主要方法中,這是絕對錯誤的。 你會一步,如果你將其更改爲:

import org.junit.Test; 

import junit.framework.TestCase; 

public class TesterWelcomeNEW extends TestCase { 
    @Test 
    public void testExpandArray() { 

      String[] a = {"a", "b", "c"}; 
      String[] b = Arrays.expandArray(a); 

      assertEquals(b.length, 2*a.length); 

      for (int i = 0; 1 < a.length; i++){ 
       assertEquals(a[i], b[i]); 
      }   
     } 
    @Test 
    public void testZero(){ 
     assertEquals(0, new Counter().get()); 
    } 
    @Test 
    public void testNonZero(){ 
     Counter c = new Counter(); 
     c.inc(); 
     assertNotEquals(0, c.get()); 
    } 
    @Test 
    public void testIncDec(){ 
     Counter c = new Counter(); 
     int n = c.get(); 
     c.inc(); 
     c.dec(); 
     assertEquals(n, c.get()); 
    } 

} 
+0

爲什麼它錯了?我仍然不能使用assertEquals,它仍然未定義爲Main。現在從我的類陣列我的方法不再定義:( – bonishadelnorte

+0

因爲主要方法是真正執行的東西。方法是你可以做的事情。但是,直到你從德主要方法調用它們,你什麼都不做。現在你剛纔定義,你將在以後使用/呼叫 – strash

+0

現在我的變化,你已經宣佈了一些方法,但你不要使用它們 – strash