gpt4 book ai didi

java - JUnit 测试从一个类到另一个类的转换

转载 作者:行者123 更新时间:2023-11-28 20:36:01 24 4
gpt4 key购买 nike

(已更新以添加有关类的更多详细信息)

我是一名测试初学者,我希望测试一种转换方法。

我正在尝试测试的方法将转换一种类型的对象,并返回另一种类型的对象,例如将 UserOne 对象转换为 UserTwo 对象,然后我想检查 UserTwo 对象的属性,以确保转换正确。

(更新)

我想做的是创建一个 NewUser 对象,将 TBUser 对象传递给原始的转换方法,然后测试从该方法返回的对象,以确保转换正确。

我的问题是在哪里创建然后传递对象。

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());
}

最佳答案

乍一看,我觉得你只是一步一步来,比如:

您的 setUp() 只设置了最基本的东西,即 tbUser 对象:

void setUp() {
super.setUp();
TBUser tbUser = new TBUser();
}

然后,您对每个需要转换的属性进行一个测试。

@Test
void testConvert() {
tbUser.setContactNumber1("0123456789");
NewUser nUser = testConvert(tbUser);
Assert.assertEquals("0123456789", nUser.getContactNumber());
}

就这么简单:一个测试方法per 需要转换的属性。

当然,要使其工作,tbUser 必须是您的测试类的字段:

class TBUserStringToNewUserConverterTest extends groovy.util.GroovyTestCase {

private TbUser;

void setUp() {
tbUser = new TbUser();

...

但请注意:这看起来仍然很奇怪。至少在使用 JUnit 时,您需要在任何应该在每次测试之前执行的方法上添加 @Before 注释。我对那个 Groovy 基类还不够熟悉。所以我只是希望以上内容做对了。

关于java - JUnit 测试从一个类到另一个类的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com