Unit Testing DTO that fails when a new property is added
How do you create a unit test that should fail or throw an error/exception whenever there is a new property added to a DTO?
For a case, a below conversion from an entity to a dto with the below implementation:
//my entity
public class SampleEntity {
private AnotherObject property1;
private AnotherPropertyObject property2;
}
//my dto
public class SampleDTO {
private String anotherObjectName;
private String anotherPropertyObjectName;
}
My method that translates entity to DTO
//service
public SampleDTO translateEntityToDTO(SampleEntity entity) {
SampleDTO dto = new SampleDTO();
//uses toString for sample and simplicity
dto.setAnotherObjectName(entity.getProperty1().toString());
dto.setAnotherPropertyObjectName(entity.getProperty2().toString());
return dto;
}
For my unit test assertions, it would likely look like
//start of test
SampleDTO expected = service.translateEntityToDTO(sampleEntity);
//asserttions
expected.getAnotherObjectName().isEqual(sampleEntity.getProperty1().toString())
expected.getAnotherPropertyObjectName().isEqual(sampleEntity.getProperty2().toString());
Now, what if I added a new property to my SampleDTO? What I can see now is any addition of property to a DTO will go un-noticed in the unit testing's perspective, no error/exception and/or failing tests.
Is this some sort of unit testing's limitation or is there a workaround for it?
unit-testing junit5
add a comment |
How do you create a unit test that should fail or throw an error/exception whenever there is a new property added to a DTO?
For a case, a below conversion from an entity to a dto with the below implementation:
//my entity
public class SampleEntity {
private AnotherObject property1;
private AnotherPropertyObject property2;
}
//my dto
public class SampleDTO {
private String anotherObjectName;
private String anotherPropertyObjectName;
}
My method that translates entity to DTO
//service
public SampleDTO translateEntityToDTO(SampleEntity entity) {
SampleDTO dto = new SampleDTO();
//uses toString for sample and simplicity
dto.setAnotherObjectName(entity.getProperty1().toString());
dto.setAnotherPropertyObjectName(entity.getProperty2().toString());
return dto;
}
For my unit test assertions, it would likely look like
//start of test
SampleDTO expected = service.translateEntityToDTO(sampleEntity);
//asserttions
expected.getAnotherObjectName().isEqual(sampleEntity.getProperty1().toString())
expected.getAnotherPropertyObjectName().isEqual(sampleEntity.getProperty2().toString());
Now, what if I added a new property to my SampleDTO? What I can see now is any addition of property to a DTO will go un-noticed in the unit testing's perspective, no error/exception and/or failing tests.
Is this some sort of unit testing's limitation or is there a workaround for it?
unit-testing junit5
add a comment |
How do you create a unit test that should fail or throw an error/exception whenever there is a new property added to a DTO?
For a case, a below conversion from an entity to a dto with the below implementation:
//my entity
public class SampleEntity {
private AnotherObject property1;
private AnotherPropertyObject property2;
}
//my dto
public class SampleDTO {
private String anotherObjectName;
private String anotherPropertyObjectName;
}
My method that translates entity to DTO
//service
public SampleDTO translateEntityToDTO(SampleEntity entity) {
SampleDTO dto = new SampleDTO();
//uses toString for sample and simplicity
dto.setAnotherObjectName(entity.getProperty1().toString());
dto.setAnotherPropertyObjectName(entity.getProperty2().toString());
return dto;
}
For my unit test assertions, it would likely look like
//start of test
SampleDTO expected = service.translateEntityToDTO(sampleEntity);
//asserttions
expected.getAnotherObjectName().isEqual(sampleEntity.getProperty1().toString())
expected.getAnotherPropertyObjectName().isEqual(sampleEntity.getProperty2().toString());
Now, what if I added a new property to my SampleDTO? What I can see now is any addition of property to a DTO will go un-noticed in the unit testing's perspective, no error/exception and/or failing tests.
Is this some sort of unit testing's limitation or is there a workaround for it?
unit-testing junit5
How do you create a unit test that should fail or throw an error/exception whenever there is a new property added to a DTO?
For a case, a below conversion from an entity to a dto with the below implementation:
//my entity
public class SampleEntity {
private AnotherObject property1;
private AnotherPropertyObject property2;
}
//my dto
public class SampleDTO {
private String anotherObjectName;
private String anotherPropertyObjectName;
}
My method that translates entity to DTO
//service
public SampleDTO translateEntityToDTO(SampleEntity entity) {
SampleDTO dto = new SampleDTO();
//uses toString for sample and simplicity
dto.setAnotherObjectName(entity.getProperty1().toString());
dto.setAnotherPropertyObjectName(entity.getProperty2().toString());
return dto;
}
For my unit test assertions, it would likely look like
//start of test
SampleDTO expected = service.translateEntityToDTO(sampleEntity);
//asserttions
expected.getAnotherObjectName().isEqual(sampleEntity.getProperty1().toString())
expected.getAnotherPropertyObjectName().isEqual(sampleEntity.getProperty2().toString());
Now, what if I added a new property to my SampleDTO? What I can see now is any addition of property to a DTO will go un-noticed in the unit testing's perspective, no error/exception and/or failing tests.
Is this some sort of unit testing's limitation or is there a workaround for it?
unit-testing junit5
unit-testing junit5
asked Nov 21 '18 at 6:44
groobie newbiegroobie newbie
401312
401312
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406569%2funit-testing-dto-that-fails-when-a-new-property-is-added%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53406569%2funit-testing-dto-that-fails-when-a-new-property-is-added%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown