【发布时间】:2019-01-14 16:08:51
【问题描述】:
(已更新以添加有关课程的更多详细信息)
我是一名测试初学者,我正在寻找一种转换方法。
我正在尝试测试的方法将转换一种类型的对象,并返回另一种类型的对象,例如将 UserOne 对象转换为 UserTwo 对象,然后我想检查 UserTwo 对象的属性,以确保转换正确。
(更新)
我想做的是创建一个 NewUser 对象,将一个 TBUser 对象传递给原始的 convert 方法,然后测试从该方法返回的对象,以确保转换正确。
我的问题是在哪里创建然后传递对象。
class TBUserStringToNew***UserConverterTest extends groovy.util.GroovyTestCase {
void setUp() {
super.setUp();
TBUser tbUser = new TBUser();
tbUser.setContactNumber1("0123456789");
}
void tearDown() {
}
@Test
void testConvert() {
New***User nUser = testConvert(tbUser);
Assert.assertEquals("0123456789", nUser.getContactNumber());
}
新用户类:
@JsonInclude(JsonInclude.Include.NON_NULL)
public class NewUser implements Serializable {
@JsonProperty("ID")
private Integer id = 0;
@JsonProperty("eID")
private Integer eId;
@JsonProperty("Forename")
private String forename;
@JsonProperty("Surname")
private String surname;
@JsonProperty("DateOfBirth")
private String dateOfBirth;
@JsonProperty("AddressLineOne")
private String addressLineOne;
@JsonProperty("AddressLineTwo")
private String addressLineTwo;
@JsonProperty("PostCode")
private String postCode;
@JsonProperty("PostCodeArea")
private String postCodeArea;
@JsonProperty("ContactNumber")
private String contactNumber;
@JsonProperty("EmailAddress")
private String emailAddress;
@JsonProperty("ReferralSource")
private String referralSource;
@JsonProperty("ReferralDetails")
private String referralDetails;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getEId() {
return eId;
}
public void setEId(Integer eId) {
this.eId = eId;
}
public String getForename() {
return forename;
}
public void setForename(String forename) {
this.forename = forename;
}
public String getSurname() {
return surname;
}
public void setSurname(String surname) {
this.surname = surname;
}
public String getDateOfBirth() {
return dateOfBirth;
}
public void setDateOfBirth(String dateOfBirth) {
this.dateOfBirth = dateOfBirth;
}
public String getAddressLineOne() {
return addressLineOne;
}
public void setAddressLineOne(String addressLineOne) {
this.addressLineOne = addressLineOne;
}
public String getAddressLineTwo() {
return addressLineTwo;
}
public void setAddressLineTwo(String addressLineTwo) {
this.addressLineTwo = addressLineTwo;
}
public String getPostCode() {
return postCode;
}
public void setPostCode(String postCode) {
this.postCode = postCode;
}
public String getPostCodeArea() {
return postCodeArea;
}
public void setPostCodeArea(String postCodeArea) {
this.postCodeArea = postCodeArea;
}
public String getContactNumber() {
return contactNumber;
}
public void setContactNumber(String contactNumber) {
this.contactNumber = contactNumber;
}
public String getEmailAddress() {
return emailAddress;
}
public void setEmailAddress(String emailAddress) {
this.emailAddress = emailAddress;
}
public String getReferralSource() {
return referralSource;
}
public void setReferralSource(String referralSource) {
this.referralSource = referralSource;
}
public String getReferralDetails() {
return referralDetails;
}
public void setReferralDetails(String referralDetails) {
this.referralDetails = referralDetails;
}
TBUserStringToNewUserConverter 类:
public class TBUserStringToNewUserConverter implements Converter<String, NewUser> {
protected static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private SimpleDateFormat nSdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Autowired
private ObjectMapper objectMapper;
@Autowired
private PlacesService placesService;
private NewUser convert(@NonNull TBUser tbUserIn) {
ValidationErrors validationErrors = new ValidationErrors();
String dob = null;
try {
dob = dayFormat.format(nlcSdf.parse(
tbUserIn.getDob()
.replace("T", " ")
.replace("Z", "")));
} catch (ParseException e) {
ValidationError validationError = new ValidationError();
validationError.setMessage(e.getLocalizedMessage());
validationErrors.add(validationError);
}
NewUser nUser = new NewUser();
nUser.setEId(tbUserIn.getId());
nUser.setId(tbUserIn.getExternalId());
nUser.setForename(tbUserIn.getFirstName());
nUser.setSurname(tbUserIn.getSurname());
nUser.setDateOfBirth(dob);
nUser.setEmailAddress(tbUserIn.getEmail());
nUser.setContactNumber(tbUserIn.getContactNumber1());
TBAddress userAddress = tbUserIn.getAddress();
String[] splitPostCode = userAddress.getPostzip().split("\\s+");
nUser.setPostCodeArea(splitPostCode[0]);
nUser.setPostCode(splitPostCode[1]);
//standard source for all users
nUser.setReferralSource("Healthy Living Centre");
//placeholder referral details
nUser.setReferralDetails("Referral Reasons: Weight Reduction, Mental Health, Respiratory, Other (Some other reason I entered). " +
"\\r\\nMedical Conditions: Medical Conditions " +
"\\r\\nMedications: Medications " +
"\\r\\nReferral Source: Bob O Donnell\\r\\n(Doctor Medical) " +
"\\r\\nRisks: May attempt something " +
"\\r\\nOther Info: Other Relevant Info:");
return nUser;
}
测试类
class TBUserStringToNewUserConverterTest extends groovy.util.GroovyTestCase {
void setUp() {
super.setUp();
TBUser tbUser = new TBUser();
}
void tearDown() {
}
@Test
void testConvert() {
tbUser.setContactNumber1("");
NewUser nUser = testConvert(tbUser);
Assert.assertEquals("0123456789", nUser.getContactNumber());
}
【问题讨论】:
-
源代码中的“***”字符是什么?
-
有一些特定于业务的名称,并且将它们删除,我可以很容易地删除或更改它们
-
请:再次阅读该链接minimal reproducible example。您不应该发布所有代码,只发布足以显示您的问题的完整代码。然后:您的代码仍然不合逻辑!您正在定义
TBUser tbUser = new TBUser();within setUp() 方法。那么您的测试方法如何使用该变量? tbUser 是一种方法中的局部变量,那么您如何期望另一种方法使用它呢?说真的:如果你不了解局部变量和字段之间的区别,那么现在使用这样的框架和编写这样的代码完全会让你负担过重。 -
感谢您的宝贵时间,我可能没有正确解释自己,甚至没有完全理解我的问题,不过我在当地得到了一点帮助,并解决了我的问题
-
感谢您的快速回归!
标签: java testing intellij-idea junit