Task 5: Use TDD to Build The toString Method
To display the data for a particular Job
object, you need to implement a custom toString method. Rather than creating this method and then testing it, you will flip that process using TDD.
Create First Test for toString
Before writing your first test, consider how we want the method to behave:
When passed a
Job
object, it should return a string that contains a blank line before and after the job information.The string should contain a label for each field, followed by the data stored in that field. Each field should be on its own line.
ID: _______ Name: _______ Employer: _______ Location: _______ Position Type: _______ Core Competency: _______
If a field is empty, the method should add, “Data not available” after the label.
(Optional) If a Job object ONLY contains data for the id field, the method should return, “OOPS! This job does not seem to exist.”
In JobTest, add a new test named testToStringStartsAndEndsWithNewLine to check the first requirement. Be sure to use assertEquals to verify that these characters are correct, and to use the exact formatting demonstrated above.
This test should check that the string starts and ends with a new line.
Be sure to use System.lineSeparator()
to declare a new line. This is an universal line break
that works on a variety of operating systems (OS).
You will need to use the lineSeparator()
in the Job
class and the JobTests
.
Woo hoo! Failure is what we want here! Now you get to fix that.
Code toString to Pass the First Test
In the Job
class, create a toString
method that passes the first test. Since the test only checks if the returned string starts and ends with a blank line, make that happen.
Do NOT add anything beyond what is needed to make the test pass. You will add the remaining behaviors for toString
as you code each new test.
Finish the TDD for toString
Code a new test for the second required behavior, named
testToStringContainsCorrectLabelsAndData
. Then run the tests to make sure the new one fails.Modify
toString
to make the new test pass. Also, make sure that your updates still pass all of the old tests.Follow the same TDD process for the third requirement, creating a test named
testToStringHandlesEmptyField
.
As usual, the autograding tests are very picky about capitalization and spaces, so your code should match the format shown above exactly.
Cool! Your Job
class is now complete and operates as desired.