You could simply provide a getter method for monthly payment:
public double getMonthlyPayment() {
return this.monthlyPaymentAmount;
}
Then in your test, do the following:
Instantiate the object, passing it certain values that should result in a known value for monthly payment.
Call getMontlyPaymet()
Compare the result of step 2 to the expected value in step 1.
It's debatable if logic is appropriate in the constructor. In your case, I believe it is. This logic, in the constructor, ensures that the object is always in a fully-initialized state. If you were to factor out this logic into a static method, and then target your test at that method, you would not be validating that the state of your objects will always be correct.
If you add the additional public static method, you are providing that as an interface to your class, which does not seem to be your intention. Making it public simply for the sake of testing is called a "testing scar". Do not allow your tests to compromise the design of your class.