Java JUnit测试错误

Java JUnit测试错误,java,junit,Java,Junit,这就是我要做的:计算一个人的确切年龄,给出他们的出生年份、月份和日期,以及当前的年份、月份和日期 你可以用这个数学技巧来计算年龄 将输入的值转换为以下格式:YYYYMMDD 从当前信息中减去出生信息 答案的前三位数字是此人的年龄。(请注意,在大多数情况下,第一位数字将为零) 例如: Birth: 19900510 Current: 20100803 Current - Birth : 0200293 First 3 Digits: 020 This person is 20 years old.

这就是我要做的:计算一个人的确切年龄,给出他们的出生年份、月份和日期,以及当前的年份、月份和日期

你可以用这个数学技巧来计算年龄

  • 将输入的值转换为以下格式:YYYYMMDD
  • 从当前信息中减去出生信息
  • 答案的前三位数字是此人的年龄。(请注意,在大多数情况下,第一位数字将为零)
  • 例如:

    Birth: 19900510
    Current: 20100803
    Current - Birth : 0200293
    First 3 Digits: 020
    This person is 20 years old.
    
    这是我的主.java文件

    class CodeClass { 
        public int ageCalculator(int birthYear, int curYear, int birthMonth, int curMonth, int birthDay, int curDay) 
        {
            String answer;
            int current = curYear*10000 + curMonth*100 + curDay; 
            int birth = birthYear*10000 + birthMonth*100 + birthDay; 
            answer=Integer.toString(current-birth);
            answer = answer.substring(0,2);
            return(Integer.parseInt(answer));
        }
    }
    
    这是JUnit测试文件

     import junit.framework.TestCase; 
        import org.junit.Test; 
        public class CodeTest extends TestCase { 
          @Test 
          public void testGetNum() { 
                assertEquals(26, CodeClass.ageCalculator(1983, 2010, 4, 4, 5, 2));
                assertEquals(27, CodeClass.ageCalculator(1983, 2010, 6, 10, 15, 1));
    
          } 
        }
    
    这是我运行测试时的错误

    Your code did not compile: /CodeTest.java:6: non-static method ageCalculator(int,int,int,int,int,int) cannot be referenced from a static context
            assertEquals(26, CodeClass.ageCalculator(1983, 2010, 4, 4, 5, 2));
                                      ^
    /CodeTest.java:7: non-static method ageCalculator(int,int,int,int,int,int) cannot be referenced from a static context
            assertEquals(27, CodeClass.ageCalculator(1983, 2010, 6, 10, 15, 1));
                                      ^
    2 errors
    

    您正在尝试访问
    ageCalculator
    ,这是一种静态方式的
    非静态
    方法:

    CodeClass.ageCalculator
    

    根据您的需要,可以标记方法
    static
    ,或者创建类的and实例,然后在该实例上调用该方法。

    您的方法
    ageCalculator(-code>)
    在CodeClass类中,实例方法意味着您试图通过类名访问的非静态方法。只有静态方法可以使用类名直接访问。但要使用非静态方法,请创建CodeClass类的实例,然后对该实例或对象调用
    ageCalculator(-,,,,,,,,,,,,,,
    方法,如下所示:

     import junit.framework.TestCase; 
        import org.junit.Test; 
        public class CodeTest extends TestCase { 
          @Test 
          public void testGetNum() { 
               CodeClass cc= new CodeClass();
                assertEquals(26, cc.ageCalculator(1983, 2010, 4, 4, 5, 2));
                assertEquals(27, cc.ageCalculator(1983, 2010, 6, 10, 15, 1));
    
          } 
    }
    

    ageCalculator()不是静态方法。使用新的CodeClass().ageCalculator(…)或使ageCalculator()成为静态方法(即公共静态int-ageCalculator()@user2766873在堆栈溢出时,有一种更好的方式通过接受答案来表示感谢。要接受答案,只需单击指向答案的勾号。接受答案有助于其他也面临相同问题的人。干杯!