2017-04-20 48 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