Exercise 3 – Demonstration of a test framework

 

Goal: Gain familiarity with a typical test framework

 

First, create a local copy of the exercise files.

cd

tar xf ~jake/CSC/exercise3.tar

cd exercise3

source setup.sh

 

You’ll find our sum-of-primes example in the file SumPrimes.java. Its been recast as a Java class. To compile and run it, printing the sum of primes less than 7:

 

./build

java SumPrimes 7

 

If you want to see the actual compilation commands used, look inside the “build” file. Note that this is just recompiling everything and leaving the resulting machine-readable files in the current directory. This is a fine approach in a simple project like this exercise; larger projects will use some form of “make” tool to do this smarter and more efficiently.

 

The file TestSumPrimes.java contains the code to setup JUnit, plus a single test. Take a look at it, and see if you understand what it contains. You can run it with or without a GUI, depending on whether you provide an extra argument. To invoke the GUI:

 

java TestSumPrimes g

 

or in command-line form, which is faster:

 

java TestSumPrimes

 

In its initial form, the test just makes sure that you can create a SumPrimes object, and passes. There are commented-out tests that will fail in the manner we discussed in lecture. Remove the leading // from those lines, and watch the test fail when you run it:

 

(edit the TestSumPrimes.java file)

./build

java TestSumPrimes g

 

Isn’t that red bar ugly? Now fix the bug(s) (Hints: its OK for a prime number to be divisible by one; there are two other bugs), and see a lovely green bar. Finally, add a couple more tests to check other ranges. (The sum of primes from 1 to 20 is 78)

 

 


Hints:

 

*) It might be simpler to separate development and test of the "is N prime?" code from the "check the sum over a range" code.

 

*) Its OK for a prime number to be divisible by 1.

 

*) If you try to divide a prime number by itself, you'll find that the remainder is zero.