idea测试类加载不出来怎么办?
问题描述:
就像这样,运行测试类后一直显示加载,写到main里可以运行,同样在eclipse测试类也可以。
package com.atguigu.exer;
/*
* 请把学生名与考试分数录入到Set中,并按分数显示前三名成绩学员的名字.怎么用Set实现?
*/
import java.util.TreeSet;
import java.util.Scanner;
import org.junit.Test;
public class ScoreTest {
private Scanner scanner;
@Test
public void test1() {
scanner = new Scanner(System.in);
TreeSet<Student> treeSet = new TreeSet<>();
System.out.println("请输入学生的姓名和成绩,当输入为负数时结束输入");
for (int i = 1;; i++) {
int score = 0;
System.out.println("请输入第" + i + "位学生的姓名:");
String name = scanner.next();
System.out.println("请输入第" + i + "位学生的成绩:(输入负数,结束录入)");
try {
score = scanner.nextInt();
} catch (ClassCastException e) {
// TODO: handle exception
System.out.println("您输入的分数有误");
}
if (score < 0) {
break;
} else {
treeSet.add(new Student(name, score));
}
}
System.out.println("您输入的成绩生成成绩单结果:");
for (Student student : treeSet) {
System.out.println(student.getName() + "--->" + student.getScore());
}
// 前三名学生的姓名
System.out.println("前三名学生的姓名为:");
int count = 0;
for (Student student : treeSet) {
if (count == 3) {
break;
} else {
System.out.println(student.getName() + "--->"
+ student.getScore());
count++;
}
}
}
}
class Student implements Comparable<Student> {
private String name;
private int score;
public Student(String name, int score) {
super();
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + score;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (score != other.score)
return false;
return true;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
int num = o.score - score;
if (num != 0) {
return num;
} else {
return this.name.compareTo(o.name);
}
}
}
答
pom文件添加junit包,或者下载junit插件
答
为了帮助解决问题,能不能截图下ScoreTest测试类test1方法的方法体,或者直接截图所有的ScoreTest类?如果能提供一下项目目录结构更好。
答
把测试类的代码贴出来看看
答
package com.atguigu.exer;
/*
* 请把学生名与考试分数录入到Set中,并按分数显示前三名成绩学员的名字.怎么用Set实现?
*/
import java.util.TreeSet;
import java.util.Scanner;
import org.junit.Test;
public class ScoreTest {
private Scanner scanner;
@Test
public void test1() {
scanner = new Scanner(System.in);
TreeSet<Student> treeSet = new TreeSet<>();
System.out.println("请输入学生的姓名和成绩,当输入为负数时结束输入");
for (int i = 1;; i++) {
int score = 0;
System.out.println("请输入第" + i + "位学生的姓名:");
String name = scanner.next();
System.out.println("请输入第" + i + "位学生的成绩:(输入负数,结束录入)");
try {
score = scanner.nextInt();
} catch (ClassCastException e) {
// TODO: handle exception
System.out.println("您输入的分数有误");
}
if (score < 0) {
break;
} else {
treeSet.add(new Student(name, score));
}
}
System.out.println("您输入的成绩生成成绩单结果:");
for (Student student : treeSet) {
System.out.println(student.getName() + "--->" + student.getScore());
}
// 前三名学生的姓名
System.out.println("前三名学生的姓名为:");
int count = 0;
for (Student student : treeSet) {
if (count == 3) {
break;
} else {
System.out.println(student.getName() + "--->"
+ student.getScore());
count++;
}
}
}
}
class Student implements Comparable<Student> {
private String name;
private int score;
public Student(String name, int score) {
super();
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
result = prime * result + score;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
if (score != other.score)
return false;
return true;
}
@Override
public int compareTo(Student o) {
// TODO Auto-generated method stub
int num = o.score - score;
if (num != 0) {
return num;
} else {
return this.name.compareTo(o.name);
}
}
}
答
应该是idea本身的问题,解决方法就是不用scanner输入或者
在你的Idea安装目录下的
D:\IntelliJ IDEA 2019.1.3\bin
里面的文件 idea64.exe.vmoptions追加以下内容:
-Deditable.java.test.console=true;
重启IDEA,重新执行单元测试类