CS 110: Introduction to Computing with Java
Do the following tasks before coming to lab. You will not be able to work on the lab if you have not already completed these tasks.
Write a 1-2 page paper answering the following questions:
This lab has to do with the game called Othello (also called Reversi). Do some web research (e.g. Google) and learn the rules of the game. For example, you can visit http://en.wikipedia.org/wiki/Reversi which has an explanation of the rules. You can also play against a computer at http://www.freegames.ws/games/boardgames/othello/othello.htm. Summarize the rules of the game.
Explain the statement “Testing can only prove the presence of bugs, not their absence.”
As you know from the pre-lab, we are working with a game called Othello. The makers of Othello have an interesting catchphrase: “A minute to learn, a lifetime to master.” In this lab, we provide you with a working, text-based version of the game.
The code we provide is almost complete. You have to write one (relatively) simple method to make the code work. However, we will focus on using JUnit, a Java framework for unit testing that is built into Dr Java as well as many other tools.
This lab gives you some experience using JUnit to test your classes.
Copy the Othello project. A complete set of source files project for the Othello game can be found in Lab6.zip. Extract these files to folder named Lab6 on the student drive. As always, open Dr Java and create a project file named Lab6. Open/save each Java source file in the project and save the project. Use the menu Project->Compile Project to compile all the files.
Run the project. Select the file Game.java in the side panel and use the Tools->Run Document’s Main Method Note what happens for your project report.
at the inRange method of the Board class. This is the method that you will be writing.
The existing code is a “Stub” that always provides the return
0 ≤ testRow < row and 0 ≤ testCol < column
Write a test class and a test method for the Board class. Our strategy will be to write the test case first, then write the method. We will use Dr Java to do this.
In Dr Java, select menu FileàNew JUnitTest Case…
Enter the test class name as TestBoard.
Use Project->Save to save the updated project file.
Edit the default name of the one method in TestBoard from testX to testInRange
Add code to the testInRange method to instantiate a Board object named “cut” (Class under Test) with a row and column range of 4 by 4.
some tests in the testInRange method. Try to think of a complete set of
test cases that should provide both true and false return
Run the tests. Use the menu Tools->Test Current Document to run your test cases. They should fail. If they all pass with the provided stub version of the Board inRange method, then your test cases are not very good. Add test cases until at least some of them do fail.
Write the inRange method. Continue the following two steps until all test cases succeed.
Edit the code in the Board inRange method.
Compile and run the TestBoard / testInRange test cases
Play Othello and enjoy. Open the lower Interactions window so that you will be able to see the entire game board area. Select the Game.java file in the sidebar and use menu Tools->Run Document’s Main Method. If you have implemented and tested your implementation of Board inRange well, the game should work correctly.
Before you leave, have your TA check off that you completed the lab. Make sure each person saves a copy of your work. You may complete the code on your own, but the TA must certify that most of your work was done in the lab.
There is no sample output for this assignment.
Write a document describing your experiences. Your lab must be printed (not handwritten).
Answer the following questions related to what you did in this week’s lab.
What are the advantages of writing the tests first then writing the methods?
Why is it important to have a stub version of the method that compiles when you write a test? Explain.
Explain what you see in the Interactions pane when you run tests. What are some possible outcomes of running tests?
Describe what you learned doing this lab. Explain what was difficult and what was easy.
Attach a listing of your completed Board and TestBoard classes.
Note: You should work alone on the lab report.
Note: The assignment is due at the BEGINNING of your next lab. No late assignments will be accepted. Emailed assignments will not be accepted. If you are not going to be in lab on the due date, you can turn the assignment ahead of time to the CS110 TA box in the CS department office.