Red is the standard color for error, so I think you ought to stick with that. But there are a few things you could do to help readability.
- Use the text background color if you have control of that. You could make the background red or green, and the text white (or another combination that works well). This has the advantage of highlighting the result even more than text color alone.
- Alternatively, alter the shade of red to be less jarring. A lighter shade of red will likely be more readable while still conveying "error".
download bmml source – Wireframes created with Balsamiq Mockups
In many applications, passing is standard, while a failure is something exceptional that needs attention. If so, I would highlight fail more than pass in some way. For example:
- Alter the background of FAIL (as suggested above) but not PASS.
- Make the FAIL text bolder (if possible).
- Put extra characters around FAIL such as
** FAIL **
or [ FAIL! ]
.