Output matching is a built in test type in ClassCube. The catch is that you may not always want to compare that the output matches exactly. Or, maybe you want to do your own comparisons.
To do this you’ll need to create your own JUnit test and use the unit testing grade type. Fortunately, it’s pretty easy to deal with output from
Let’s start by looking at an example JUnit test file. There’s only a shell test method called, creatively
test. Take a look and then we’ll talk about the code.
Notice that we’re creating two instance variables
errContent. Both are
ByteArrayOutputStream. We’re going to use these to store the output from
We’re also going to use a set of 4 methods.
captureOut turns on capture of
getOut returns the value and turns the capture off.
getErr do the same except for
The idea is that you call the
captureOut method whenever you want to start capturing the output. Then you do call the tested methods that are producing output. After you’ve called the method you’re testing you store the results of
getOut into a String. Compare that string with what you’re expecting.
Same applies to the
getErr pair of methods.
Do you need this?
If you’re using ClassCube and just want to do an exact output comparison you don’t need to go through this. There’s an output matching grading type built in. You’d just select output matching and paste in the expected output. No reason to build your own test files.
That said, this code is similar to what we use behind the scenes when you select output matching as the grading type.