如何正確的使用Mock[2] 軟件測試
public void requreInsurance(Insurances insurances) {
people.requreInsurance(insurances);
}
public clas People {
public void requreInsurance(Insurances insurances) {
job.requreInsurance(insurances);
}
}
public class Job {
public void requreInsurance(Insurances insurances) {
insurances.add(new HealthInsurance());
insurances.add(new RetirementInsurance());
insurances.add(new HouseFund());
insurances.add(new UnemploymentInsurance());
}
}
public class NullJob {
public void requreInsurance(Insurances insurances) {
insurances.add(new RetirementInsurance());
}
}
在第一個(gè)例子中我們需要進(jìn)行兩個(gè)假設(Null 和 Not Null),而第二個(gè)例子,我們只需要一種假設
第一個(gè)例子中稀松平常的代碼違反了基本的面向對象的原則“封裝”,簡(jiǎn)而言之是tell do not ask!!原則,因為違反了這個(gè)原則,我們不得不做出很多假設,減少假設的一個(gè)有效途徑就是減少return,tell你的對象替你效勞,如果你對寫(xiě)不出健壯的mock測試煩惱,不妨看看是否寫(xiě)出了符合面向對象原則的產(chǎn)品代碼,
正確使用Mock的原則就是盡量不用,改善設計才是王道,代碼難于使用通常的方法進(jìn)行測試而不得不使用mock,絕對是一種smell,不要使用mock來(lái)掩蓋這種味道。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/