Help me solve this home / study / engineering / computer science / computer scie
ID: 3754716 • Letter: H
Question
Help me solve this
home / study / engineering / computer science / computer science questions and answers / write a junit test file to reasonably test the java code in gradesheet.java /** * gradesheet ...e to reasonably test the java code in GradeSheet.java /** * GradeSheet - a ...
Write a JUnit test file to reasonably test the java code in GradeSheet.java
/**
* GradeSheet - a simple class for holding a grade sheet.
* Currently the grade sheet is limited to assignments all of the same weight,
* although it does support dropping the lowest grade.
*
*
*/
public class GradeSheet
{
/**
* create a grade sheet for a specified number of assignments
* @param numAssignments the number of assignments, >= 0
*/
public GradeSheet(int numAssignments)
{
_assignments = new Integer[numAssignments];
}
/**
* get the total number of assignments currently supported
* @return the number of assignments currently expected, >= 0
*/
public int getNumAssignments()
{
return _assignments.length;
}
/**
* add a new assignment to the grade sheet, increasing the number of assignments
*
*/
public void addAssignment()
{
Integer[] oldAssigns = _assignments;
_assignments = new Integer[oldAssigns.length+1];
for (int i = 0; i < oldAssigns.length; i++)
_assignments[i] = oldAssigns[i];
}
/**
* mark an assignment as ungraded
* @param assignment the assignment number from 0 to getNumAssignments()-1
*/
public void clearAssignmentGrade(int assignment)
{
_assignments[assignment] = null;
}
/**
* assign a grade to an assignment in this gradebook
* @param assignment the assignment number from 0 to getNumAssignments()-1
* @param grade the grade being assigned to the indicated assignment
*/
public void setAssignmentGrade(int assignment,int grade)
{
_assignments[assignment] = Integer.valueOf(grade);
}
/**
* get the grade assigned on a given assignment
* @param assignment the assignment number, starting from 0, always < getNumAssignments()
* @return the grade or null if the assignment has not yet been graded
*/
public Integer getAssignmentGrade(int assignment)
{
return _assignments[assignment];
}
/**
* get the numeric average of all assignments, assigning a 0 to any assignment that is missing
* @return the average
*/
public float finalAssignmentAverage()
{
int numAssigns = 0;
float total = 0;
for (Integer score : _assignments)
{
numAssigns++;
if (score != null)
total += score.intValue();
}
if (numAssigns == 0)
return 0;
return total/numAssigns;
}
/**
* get the numeric average of all but the worst assignment,
* assigning a 0 to any missing assignment.
* @return the average of the best getNumAssignments()-1 assignments
*/
public float finalAssignmentAverageWithDrop()
{
int numAssigns = 0;
float total = 0;
int drop = 0;
for (Integer score : _assignments)
{
numAssigns++;
if (score != null)
{
int scoreValue = score.intValue();
if (numAssigns == 1)
drop = scoreValue;
else if (drop > scoreValue)
drop = scoreValue;
total += scoreValue;
}
}
if (numAssigns <= 1)
return 0;
return (total-drop)/(numAssigns-1);
}
/**
* get the average for all graded assignments,
* ignoring any ungraded assignments
* @return the average, returns null if no assignments have been graded yet
*/
public Float currentAssignmentAverage()
{
int numAssigns = 0;
float total = 0;
for (Integer score : _assignments)
{
if (score == null)
continue;
numAssigns++;
total += score.intValue();
}
if (numAssigns == 0)
return null;
return Float.valueOf(total/numAssigns);
}
private Integer[] _assignments;
}
question
Assignment 1-unit testing 1) Write a JUnit test file to reasonably test the java code in GradeSheet. java Submit the JUnit test file 2) Check the code coverage of your JUnit using eclEmma (or an emma or JaCoCo plugin for an alternative environment if you pref What is the instruction coverage? What is the branch coverage? If you are not 100%, indicate why you think that is. Is it a problem? How could you resolve it? Submit a short text file (or docX or pdf or libre office or .) that answers these questions GradeSheet java Submission status Submission status No attempt Grading status Not gradedExplanation / Answer
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Test;
public class GradeSheetTest {
private int numAssignments=5;
private Integer[] _assignments;
GradeSheet gs;
@Before
public void init() {
gs=new GradeSheet(numAssignments);
_assignments=new Integer[numAssignments];
for(int i=0;i<numAssignments;i++){
_assignments[i]=1;
}
}
/**
* Test get num assignments.
*/
@Test
public void testGetNumAssignments() {
assertEquals(numAssignments, gs.getNumAssignments());
}
/**
* Test add assignment.
*/
@Test
public void testAddAssignment() {
Integer[] oldAssigns = _assignments;
_assignments = new Integer[oldAssigns.length + 1];
for (int i = 0; i < oldAssigns.length; i++)
_assignments[i] = oldAssigns[i];
assertEquals(oldAssigns.length+1, _assignments.length);
}
/**
* Test set assignment grade.
*/
@Test
public void testSetAssignmentGrade() {
int assignment=0;
int grade=1;
gs.setAssignmentGrade(assignment, grade);
_assignments[assignment] = Integer.valueOf(grade);
assertEquals(_assignments[assignment], gs.getAssignmentGrade(assignment));
}
/**
* Test get assignment grade.
*/
@Test
public void testGetAssignmentGrade() {
gs.setAssignmentGrade(0, 1);
gs.setAssignmentGrade(1, 1);
assertEquals(_assignments[1], gs.getAssignmentGrade(1));
}
/**
* Test final assignment average.
*/
@Test
public void testFinalAssignmentAverage() {
gs.setAssignmentGrade(0, 1);
gs.setAssignmentGrade(1, 1);
gs.setAssignmentGrade(2, 1);
gs.setAssignmentGrade(3, 1);
gs.setAssignmentGrade(4, 1);
assertEquals(1.0, gs.finalAssignmentAverage(),0.0);// Average of five 1's is 5
}
/**
* Test final assignment average with drop.
*/
@Test
public void testFinalAssignmentAverageWithDrop() {
gs.setAssignmentGrade(0, 1);
gs.setAssignmentGrade(1, 1);
gs.setAssignmentGrade(2, 1);
gs.setAssignmentGrade(3, 1);
gs.setAssignmentGrade(4, 1);
assertEquals(1.0, gs.finalAssignmentAverageWithDrop(),0.0);
}
/**
* Test current assignment average.
*/
@Test
public void testCurrentAssignmentAverage() {
gs.setAssignmentGrade(0, 1);
gs.setAssignmentGrade(1, 1);
gs.setAssignmentGrade(2, 1);
gs.setAssignmentGrade(3, 1);
gs.setAssignmentGrade(4, 1);
gs.clearAssignmentGrade(0);
assertEquals(1.0, gs.currentAssignmentAverage(),0.0);
}
/**
* Test clear assignment grade.
*/
@Test
public void testClearAssignmentGrade() {
int assignment=0;
_assignments[assignment] = null;
gs.setAssignmentGrade(0, 1);
gs.clearAssignmentGrade(0);
assertNull("Value is set to null after calling clearAssignmentGrade method",gs.getAssignmentGrade(assignment));
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.