【发布时间】:2019-05-16 13:12:02
【问题描述】:
我正在下面创建一个 testMethod() 类来测试 Main 类中的方法。当我执行程序时,它给出了一个编译器错误:Java 非静态变量不能从非静态上下文中引用。该项目需要构建 2 个不同的类。第一个类必须包含 3 个方法,其中第三个调用方法 1 和 2。第二个类用于测试主类中的方法。
我是 Java 新手,正在努力找出导致此错误的原因。
谢谢
导入 java.util.Scanner;
公共类主{
char reply;
int input;
public void gradeModule(int mark) {
mark = input;
if (mark >= 70) {
System.out.println("Excellent");
} else if (mark >= 60 && mark <= 69) {
System.out.println("Good");
} else if (mark >= 50 && mark <= 59) {
System.out.println("Satisfactory");
} else if (mark >= 40 && mark <= 49) {
System.out.println("Compensatable fail");
} else {
System.out.println("Outright fail");
}
}
public int getValidModuleMark() {
Scanner keyboard = new Scanner(System.in);
while (input > 100 || input < 0)
{
System.out.println("Please enter a valid mark between 0 - 100: ");
input = keyboard.nextInt();
}
return input;
}
public void startModuleGrading() {
System.out.println("*********** Module Grading Program *********");
do {
getValidModuleMark();
gradeModule(input);
System.out.println("Would you like to continue grading (Y/N)? ");
Scanner keyboard = new Scanner(System.in);
reply = keyboard.next().charAt(0);
if (reply == 'N' || reply == 'n') {
System.out.println("Thank you!");
}
} while (reply == 'Y' || reply == 'y');
}
}
类测试方法{
Main test = new Main ();
public static void main(String [] args){
test.startmoduleGrading();
}
}
【问题讨论】:
-
你的班级之前有没有做过测试,例如JUnit?你能复制前面的例子吗?这种情况的典型答案是只构建另一个类并让它针对原始类运行测试(测试类
A,创建类B并让B.main()实例化一个A类型的对象并测试所有它的功能)。 -
要么使用测试框架(junit、testng),要么只是通过执行方法调用并将输出与预期返回值进行比较(这只是 assertEquals 的另一种实现)的简化方法跨度>