Team Project: Core Logic and Unit Tests

Homework Policy

For this homeowork you are required to work with your assigned team to complete the assignment. You can use class notes and internet sources to look up design patterns. However, the code and design you submit as your solution must be your original work.

Learning Objectives

In this homework, you will practice:

Description

For this phase of the project you need to implement and test all the methods of the core logic you have designed in the previous phase. Some of you already implemented some of the core logic methods. Ensure that the implementation is present for all of the methods and test your code using JUnit framework.

We will also use this phase to improve your code organization. Place all the classes that represent the state of your application into the model package. Place all the code that implements the use cases of your application into the controller package (if your use cases were implemented in a driver, now is the time to re-ogranize).

It may be best to start with the unit test implementation, as it will help you discover potential design flaws. Begin with implementing tests for your use cases. Once use case tests are implemented, implement the specific methods of the underlying classes and check if the unit tests are starting to pass. Also, add unit tests for specific model classes, to ensure that they are working properly. As you are working on this, make a note of any flaws your unit tests caught (you'll use this information in your final presentation).

Submitting your solution

Submit your code (class implementations and unit tests) to your team git repo.

Each team member must email me a filled out copy of the Peer Evaluation Form. Title your email: CSCI 2300 team ___ Phase 3 Evaluation. (Fill in the blank with your team number).

Grading

I will use the list of questions below. Each question can score you from 0 to 3 points (unless otherwise stated): No - 0, Somewhat - 1 or 2, Yes - 3. The sum of these points will be your grade for this homework.

  1. Did you provide sufficient unit tests for your use cases?
  2. Did you provide sufficient unit tests for your model classes?
    • This item is worth 7 points
    • I will grade this by checking if there are unit tests I could add.
    • The more tests I add that find bugs, the fewer points you'll get for this category
  3. Do your unit tests utilize JUnit framework?
  4. Did you re-organize your code into model/controller packages?
  5. Did you implement all the methods of your model classes?
  6. Does your implementation avoid code duplication?
  7. Do all your unit tests pass?