Cleaned up TestResult by adding Factory methods and making ctors/members private