我在使用 Eclipse 时遇到了这个错误。
import static org.junit.Assert.*;
public class StudentTest extends Student {
@Before
public void setUp() throws Exception {
}
@Test
public void testGetCurrentEarnedCr() {
Student student1 = new Student("Jane", "Smith");
int credits = 45;
student1.setCurrentEarnedCr(credits);
assertEquals(credits, student1.getCurrentEarnedCr());
}
}
我不明白为什么会给我这个错误。它与 Eclipse 有关吗?我在网上查找并尝试了建议的解决方案来修复它是否实际上是 Eclipse 错误但它没有解决任何问题。
此外,如果这有助于解决任何问题,这里是 Student 类。
public class Student
{
// Information about the individual student
private double gpa;
private String firstName, lastName, id;
private int currentEarnedCr; // Current earned credits (already completed)
private int anticipatedAdditionalCr; // Anticipated additional credits (currently taking)
private boolean lascComplete; // Has the student completed LASC requirements
private boolean majorComplete; //Has the student completed requirements for the major
// Minimum number of credits required to graduate
public static final int REQUIRED_CR = 120;
// Keeps track of the id number to assign to the next student to be created
private static int nextId = 1;
/**
* Creates a new student given a first and last name. An id number is assigned sequentially.
*
* @param firstName the student's first name
* @param lastName the student's last name
*/
public Student(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
this.id = String.format("%07d",nextId); // 7 digits wide, zero padded
nextId++;
}
/**
* Returns the number of students which have been created.
*
* @return the number of students which have been created
*/
public static int getStudentCount() {
return nextId-1;
}
/**
* Set the GPA of the student.
*
* @param gpa the student's GPA
*/
public void setGpa(double gpa) {
this.gpa = gpa;
}
/**
* Returns the student's GPA.
*
* @return the student's GPA
*/
public double getGpa() {
return gpa;
}
/**
* Sets the student's first name.
*
* @param firstName the student's first name
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
* Returns the student's first name.
*
* @returns the student's first name
*/
public String getFirstName() {
return firstName;
}
/**
* Sets the student's last name.
*
* @param lastName the student's last name
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
* Returns the student's last name.
*
* @returns the student's last name
*/
public String getLastName() {
return lastName;
}
/**
* Returns the student's ID number.
*
* @returns the student's ID number
*/
public String getId() {
return id;
}
/**
* Sets the student's current earned credits.
* (This should really be done by looking at a
* list of completed courses, not by setting it directly.)
*
* @param currentEarnedCr the number of current earned credits
*/
public void setCurrentEarnedCr(int currentEarnedCr) {
this.currentEarnedCr = currentEarnedCr;
}
/**
* Returns the student's current earned credits.
*
* @return the student's current earned credits
*/
public int getCurrentEarnedCr() {
// This should really be done by looking at a
// list of completed courses, not by returning a variable.
return currentEarnedCr;
}
/**
* Sets the student's anticipated additional credits (the
* courses they are currently taking).
* (This should really be done by looking at a
* list of registered courses, not by setting it directly.)
*
* @param anticipatedAdditionalCr the number of anticipated additional credits
*/
public void setAnticipatedAdditionalCr(int anticipatedAdditionalCr) {
this.anticipatedAdditionalCr = anticipatedAdditionalCr;
}
/**
* Returns the student's anticipated additional credits.
*
* @return the student's anticipated additional credits
*/
public int getAnticipatedAdditionalCr() {
// This should really be done by looking at a
// list of registered courses, not by returning a variable.
return anticipatedAdditionalCr;
}
/**
* Sets whether the student has completed the LASC requirements.
* (This should really be done by looking at a
* list of completed courses, not by setting it directly.)
*
* @param lascComplete whether LASC requirements are complete
*/
public void setLascComplete(boolean lascComplete) {
this.lascComplete = lascComplete;
}
/**
* Returns whether the student has completed the LASC requirements.
*
* @return whether the student has completed the LASC requirements
*/
public boolean getLascComplete() {
// This should really be done by looking at a
// list of complete courses, not by returning a variable.
return lascComplete;
}
/**
* Sets whether the student has completed the major requirements.
* (This should really be done by looking at a
* list of completed courses, not by setting it directly.)
*
* @param majorComplete whether major requirements are complete
*/
public void setMajorComplete(boolean majorComplete) {
this.majorComplete = majorComplete;
}
/**
* Returns whether the student has completed the major requirements.
*
* @return whether the student has completed the major requirements
*/
public boolean getMajorComplete() {
// This should really be done by looking at a
// list of complete courses, not by returning a variable.
return majorComplete;
}
/**
* Returns the student's remaining credits to graduate
* (not including the courses they are currently taking).
*
* @return the student's remaining credits to graduate
*/
public int getCurrentRemainingCr() {
return REQUIRED_CR - currentEarnedCr;
}
/**
* Returns the student's anticipated remaining credits to graduate
* (including the courses they are currently taking).
*
* @return the student's anticipated remaining credits to graduate
*/
public int getAnticipatedRemainingCr() {
return getCurrentRemainingCr() - anticipatedAdditionalCr;
}
/**
* Returns whether the student is ready to graduate.
*
* @return whether the student is ready to graduate
*/
public boolean readyToGraduate() {
return getCurrentRemainingCr() == 0 && gpa >= 2.0 && lascComplete && majorComplete;
}
}
最佳答案
这不是 eclipse 的问题,而是您在 Studenttest 中继承 Student 类的问题。通常,如果父类(super class)没有默认构造函数,那么子类应该有一个显式调用父类构造函数的构造函数。在你的情况下,你的父 Student 类只有一个带参数的构造函数,所以任何扩展 Student 的类都应该有一个构造函数,它使用 super(firstName.lastName) 显式调用 Student 的这个构造函数,否则 java 不允许你扩展你的类。
作为您问题的解决方案,您无需在 StudentTest 类中扩展 Student 类。通常任何测试任何其他类的功能的测试类都不需要扩展它。
关于java - 隐式 super 构造函数 StudentTest() 未定义。必须显式调用另一个构造函数”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25800035/