在编写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