ud494 »

Test Driven Development Project


After Project 1, Lauren was so happy with the AverageSentenceLength application that she decided to hire your team again for another project. For this new project, your team must develop a simple tool (GradesTool) that, given a database with various data about the students in a class, allows the instructors to get information about the students and their performance. You will develop the GradesTool application by following a test-driven development approach such as the one we saw in P4L4, in which development happens in iterations and according to the following cycle: (1) select story cards to implement, (2) define task cards for the selected story cards, (3) write test cases for the classes in the task cards, (4) write code that makes the test cases pass. Specifically, this project will consist of three deliverables:

Deliverable 1


  • Story/task cards
  • Junit test cases


  • Code that makes the test cases pass

Deliverable 2


  • Story cards
  • Task cards


  • Junit test cases

Deliverable 3


  • Test cases (yours from Part 2)


  • Code that makes the test cases pass

Deliverable 1 Details

For this deliverable, we will assume to be in the first iteration of the process and that somebody has already done the steps from (1) through (3) described in the overview. You will be provided with a story card, two task cards derived from it, and a set of corresponding test cases, and your job will be to perform step (4): writing code that makes the test cases pass.

Story Card

"The instructor (or the TA) launches the GradesTool application to get information about the students and the class. The application prints the number of students and information about each student: name, GT ID, e-mail, and attendance. It also prints the number of assignments and projects given so far. After that, it asks the user if (s)he wants to continue or exit. In the former case, it prints the latest information again.”

Example "screenshot"

Important note: you don’t have to build this front-end. It is provided just to better clarify the requirements.

Screen Shot 2013-12-30 at 4.16.35 PM.png


  • All data is stored in an Excel file called GradesDatabase6300.xlsx (to access the file, see instructions below).

Task Cards

  • Task 1: Develop a class (Student) that holds the information about a student, such as name and GT ID.
  • Task 2: Develop a class (GradesDB) that encapsulates most of the system functionality and provides an intuitive interface towards the information in the spreadsheet.


  • Keeping in mind the story card and the corresponding tasks, write code that makes the provided test cases pass. (Important: you cannot modify the provided test cases; that is, you cannot modify class GradesDBTest.)
  • To access the spreadsheet use the Apache POI library.
  • All the materials needed for the assignment are available in your team repository, under the directory 6300Sum14Project3/GradesTool:
    • JUnit test cases (directory "test")
    • Apache POI, JUnit, and other necessary libraries (directory "libs")--you should not need any other non-standard libraries
    • GradesDatabase6300.xlsx spreadsheet (directory "DB")
  • Directory GradesTool is already configured as an Eclipse project, so you should be able to directly import the project from git under Eclipse.

Deliverable 1 Submission

  • Write the code that makes the provided test cases pass in package edu.gatech under directory "src" (you should already have the right directory structure).
  • Commit and push your code.
  • Paste the commit ID for your submission on T-Square.

Deliverable 2 Details

Coming in due time.

Deliverable 3 Details

Coming in due time.