Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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 graded

Explanation / 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));

}

}