在編寫UI自動化測試時,我遇到了包含許多字段的表單,而不是將大量參數傳遞給測試方法,我創建了類來快速設置表單數據。所以,如果有一個註冊表格創建SignUpDataObjectClass這將對生成相應的領域,即數據對象使用抽象類有多糟糕
public class SignUpFormObject() {
private username;
private password;
public SignUpFormObject setUsername(String username) {
this.username = username;
return this;
}
public String getUsername() {
return username;
}
public SignUpFormObject setPassword(String password) {
this.password = password;
return this;
}
public String getPassword() {
return password;
}
// Util method to set signup test data. Test method can use it on the fly
public static SignUpFormObject setSignUpData() {
SignUpFormObject dataObject = new SignUpFormObject();
dataobject.setUsername("test user").setPassword("password");
return dataobject;
}
}
然後我碰到一個場景來了,當它沒有意義的,有一個數據對象類的形式實例變量。表格與創建優惠券有關,然後可能有不同類別的優惠券。爲了簡潔起見,我會在這裏限制字段的數量。所以會有兩種優惠券 - 優惠和可打印。他們都將有優惠券的名稱和具體的一個領域提供 (讓我們考慮一下吧 - 提供到期日期),另一個用於打印(我們認爲這是 - 打印代碼)
所以我決定創建券抽象類,將有所有公共字段,然後CouponOffer和CouponPrintable類將延長優惠券類,並添加自己的領域,即
public abstract class Coupon {
private String couponname;
public Coupon setCouponname(String couponName) {
this.couponname = couponname;
}
public String getCouponname() {
return couponname;
}
而且CouponOffer類在這裏 -
public class CouponOffer extends Coupon {
private String offerExpireDate;
public CouponOffer setOfferExpireDate(String offerExpireDate) {
this.offerExpireDate = offerExpireDate;
return this;
}
public String getOfferExpireDate() {
return offerExpireDate;
}
// Util method to set coupon offer data
public static CouponOffer setCouponOfferData() {
CouponOffer couponOffer = new CouponOffer();
couponOffer.setCouponname("test coupon");
couponOffer.setOfferExpireDate("31/12/2013");
return couponOffer();
}
}
我願意知道使用抽象類是不好的方法,有更好的解決方案。
只是好奇,不應該'setSignUpData'和'setCouponOfferData'是靜態方法嗎? – bezmax
這是我平行運行測試的問題嗎? – Tarun
不,你正在創建一個couponOffer的新實例。所以它是完全線程安全的,使其成爲靜態的。 – bezmax