using json unit test files in a java programHow do I test a private function or a class that has private methods, fields or inner classes?Is Java “pass-by-reference” or “pass-by-value”?How do I efficiently iterate over each entry in a Java Map?Unit Testing C CodeWhat's the best strategy for unit-testing database-driven applications?How do I read / convert an InputStream into a String in Java?When to use LinkedList over ArrayList in Java?How do I generate random integers within a specific range in Java?How do I convert a String to an int in Java?Creating a memory leak with Java
Confusion regarding control system of Mars Rover?
Is there a pattern for handling conflicting function parameters?
What is the point of impeaching Trump?
How to level a picture frame hung on a single nail?
Does the US Armed Forces refuse to recruit anyone with an IQ less than 83?
Bothered by watching coworkers slacking off
Can I cast Death Ward on additional creatures without causing previous castings to end?
What does a textbook look like while you are writing it?
Re-entering the UK after overstaying in 2008
When Vesuvan Shapeshifter copies turn face up replacement effects, why do they work?
Does the 'java' command compile Java programs?
Why aren't faces sharp in my f/1.8 portraits even though I'm carefully using center-point autofocus?
Is the "spacetime" the same thing as the mathematical 4th dimension?
Why most footers have a background color as a divider of section?
Decision Variable Value from a Set (Gurobi)
Isn't the detector always measuring, and thus always collapsing the state?
Why such a singular place for bird watching?
What is the difference between increasing volume and increasing gain?
Can anyone give me the reason why music is taught this way?
How dangerous are my worn rims?
The answer is a girl's name (my future granddaughter) - can anyone help?
Drawing Maps; flat distortion
Why has Speaker Pelosi been so hesitant to impeach President Trump?
Booting Ubuntu from USB drive on MSI motherboard -- EVERYTHING fails
using json unit test files in a java program
How do I test a private function or a class that has private methods, fields or inner classes?Is Java “pass-by-reference” or “pass-by-value”?How do I efficiently iterate over each entry in a Java Map?Unit Testing C CodeWhat's the best strategy for unit-testing database-driven applications?How do I read / convert an InputStream into a String in Java?When to use LinkedList over ArrayList in Java?How do I generate random integers within a specific range in Java?How do I convert a String to an int in Java?Creating a memory leak with Java
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty
margin-bottom:0;
I am trying to unit test some code. I have 2 fields in my input data that may or may not be in the data, so I want to test all 4 scenarios (ab, a not b, b not a, neither a nor b). I created 4 different json files to use as mocked input, covering each scenario. I could have created one file with neither field, and then just added the required field into the mock data for each of the 4 tests. That approach to me, seems like the test has too much control over the test data. I prefer the 4 files approach, but one of my coworkers is complaining about 4 files being almost exactly the same.
I know this is asking for opinion, but which seems like a better approach? Have all 4 files, or have each test manipulate the data before the assertion?
java unit-testing
add a comment
|
I am trying to unit test some code. I have 2 fields in my input data that may or may not be in the data, so I want to test all 4 scenarios (ab, a not b, b not a, neither a nor b). I created 4 different json files to use as mocked input, covering each scenario. I could have created one file with neither field, and then just added the required field into the mock data for each of the 4 tests. That approach to me, seems like the test has too much control over the test data. I prefer the 4 files approach, but one of my coworkers is complaining about 4 files being almost exactly the same.
I know this is asking for opinion, but which seems like a better approach? Have all 4 files, or have each test manipulate the data before the assertion?
java unit-testing
It kinda depends. If the files are super big, then just one. If they are smaller, then it depends on if it takes longer to change a value, or add a value. 4 files will take longer to load though.
– JustAFellowCoder
Mar 28 at 20:58
My vote is no files -- If this were me I'd want the test to just inject the json directly, so I don't have to keep the contents of the files in sync with my test over time. I might consider using files if the data was really large. If your class under test requires you provide a file, it's probably doing too much anyway, and should be split up.
– Gus
Mar 28 at 21:01
Also consider cost of maintenance. If those two fields turn into four and you need to test all combinations, you have to supply 16 files.
– Not a JD
Mar 28 at 21:09
my 4 files are fairly small (60 lines each)
– Mark
Mar 28 at 21:37
60 lines, not much of a problem either way won't make a difference. Completely arbitrary. Just different ways you'll have to code it.
– JustAFellowCoder
Mar 29 at 0:43
add a comment
|
I am trying to unit test some code. I have 2 fields in my input data that may or may not be in the data, so I want to test all 4 scenarios (ab, a not b, b not a, neither a nor b). I created 4 different json files to use as mocked input, covering each scenario. I could have created one file with neither field, and then just added the required field into the mock data for each of the 4 tests. That approach to me, seems like the test has too much control over the test data. I prefer the 4 files approach, but one of my coworkers is complaining about 4 files being almost exactly the same.
I know this is asking for opinion, but which seems like a better approach? Have all 4 files, or have each test manipulate the data before the assertion?
java unit-testing
I am trying to unit test some code. I have 2 fields in my input data that may or may not be in the data, so I want to test all 4 scenarios (ab, a not b, b not a, neither a nor b). I created 4 different json files to use as mocked input, covering each scenario. I could have created one file with neither field, and then just added the required field into the mock data for each of the 4 tests. That approach to me, seems like the test has too much control over the test data. I prefer the 4 files approach, but one of my coworkers is complaining about 4 files being almost exactly the same.
I know this is asking for opinion, but which seems like a better approach? Have all 4 files, or have each test manipulate the data before the assertion?
java unit-testing
java unit-testing
edited Mar 29 at 8:43
Krishnan Mahadevan
9,9183 gold badges19 silver badges47 bronze badges
9,9183 gold badges19 silver badges47 bronze badges
asked Mar 28 at 20:53
MarkMark
8061 gold badge12 silver badges41 bronze badges
8061 gold badge12 silver badges41 bronze badges
It kinda depends. If the files are super big, then just one. If they are smaller, then it depends on if it takes longer to change a value, or add a value. 4 files will take longer to load though.
– JustAFellowCoder
Mar 28 at 20:58
My vote is no files -- If this were me I'd want the test to just inject the json directly, so I don't have to keep the contents of the files in sync with my test over time. I might consider using files if the data was really large. If your class under test requires you provide a file, it's probably doing too much anyway, and should be split up.
– Gus
Mar 28 at 21:01
Also consider cost of maintenance. If those two fields turn into four and you need to test all combinations, you have to supply 16 files.
– Not a JD
Mar 28 at 21:09
my 4 files are fairly small (60 lines each)
– Mark
Mar 28 at 21:37
60 lines, not much of a problem either way won't make a difference. Completely arbitrary. Just different ways you'll have to code it.
– JustAFellowCoder
Mar 29 at 0:43
add a comment
|
It kinda depends. If the files are super big, then just one. If they are smaller, then it depends on if it takes longer to change a value, or add a value. 4 files will take longer to load though.
– JustAFellowCoder
Mar 28 at 20:58
My vote is no files -- If this were me I'd want the test to just inject the json directly, so I don't have to keep the contents of the files in sync with my test over time. I might consider using files if the data was really large. If your class under test requires you provide a file, it's probably doing too much anyway, and should be split up.
– Gus
Mar 28 at 21:01
Also consider cost of maintenance. If those two fields turn into four and you need to test all combinations, you have to supply 16 files.
– Not a JD
Mar 28 at 21:09
my 4 files are fairly small (60 lines each)
– Mark
Mar 28 at 21:37
60 lines, not much of a problem either way won't make a difference. Completely arbitrary. Just different ways you'll have to code it.
– JustAFellowCoder
Mar 29 at 0:43
It kinda depends. If the files are super big, then just one. If they are smaller, then it depends on if it takes longer to change a value, or add a value. 4 files will take longer to load though.
– JustAFellowCoder
Mar 28 at 20:58
It kinda depends. If the files are super big, then just one. If they are smaller, then it depends on if it takes longer to change a value, or add a value. 4 files will take longer to load though.
– JustAFellowCoder
Mar 28 at 20:58
My vote is no files -- If this were me I'd want the test to just inject the json directly, so I don't have to keep the contents of the files in sync with my test over time. I might consider using files if the data was really large. If your class under test requires you provide a file, it's probably doing too much anyway, and should be split up.
– Gus
Mar 28 at 21:01
My vote is no files -- If this were me I'd want the test to just inject the json directly, so I don't have to keep the contents of the files in sync with my test over time. I might consider using files if the data was really large. If your class under test requires you provide a file, it's probably doing too much anyway, and should be split up.
– Gus
Mar 28 at 21:01
Also consider cost of maintenance. If those two fields turn into four and you need to test all combinations, you have to supply 16 files.
– Not a JD
Mar 28 at 21:09
Also consider cost of maintenance. If those two fields turn into four and you need to test all combinations, you have to supply 16 files.
– Not a JD
Mar 28 at 21:09
my 4 files are fairly small (60 lines each)
– Mark
Mar 28 at 21:37
my 4 files are fairly small (60 lines each)
– Mark
Mar 28 at 21:37
60 lines, not much of a problem either way won't make a difference. Completely arbitrary. Just different ways you'll have to code it.
– JustAFellowCoder
Mar 29 at 0:43
60 lines, not much of a problem either way won't make a difference. Completely arbitrary. Just different ways you'll have to code it.
– JustAFellowCoder
Mar 29 at 0:43
add a comment
|
1 Answer
1
active
oldest
votes
Like for me, your coworker is right.
Create two files: a.json-part
and b.json-part
. Let's a.json-part
contains
"a": .....
and b.json-part
contains similar content for b
(NB: not a JSON, just a part!)
So, for your tests you can build test data by simple concatenation of parts like
String ab_json = "" + readAsText("a.json-part") + "," + readAsText("b.json-part") + "";
String a_not_b_json = "" + readAsText("a.json-part") + "";
and so on.
In this case you can combine your fields as you want and can be sure you didn't miss any file in case if some field is changed.
add a comment
|
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/4.0/"u003ecc by-sa 4.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%2f55406692%2fusing-json-unit-test-files-in-a-java-program%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Like for me, your coworker is right.
Create two files: a.json-part
and b.json-part
. Let's a.json-part
contains
"a": .....
and b.json-part
contains similar content for b
(NB: not a JSON, just a part!)
So, for your tests you can build test data by simple concatenation of parts like
String ab_json = "" + readAsText("a.json-part") + "," + readAsText("b.json-part") + "";
String a_not_b_json = "" + readAsText("a.json-part") + "";
and so on.
In this case you can combine your fields as you want and can be sure you didn't miss any file in case if some field is changed.
add a comment
|
Like for me, your coworker is right.
Create two files: a.json-part
and b.json-part
. Let's a.json-part
contains
"a": .....
and b.json-part
contains similar content for b
(NB: not a JSON, just a part!)
So, for your tests you can build test data by simple concatenation of parts like
String ab_json = "" + readAsText("a.json-part") + "," + readAsText("b.json-part") + "";
String a_not_b_json = "" + readAsText("a.json-part") + "";
and so on.
In this case you can combine your fields as you want and can be sure you didn't miss any file in case if some field is changed.
add a comment
|
Like for me, your coworker is right.
Create two files: a.json-part
and b.json-part
. Let's a.json-part
contains
"a": .....
and b.json-part
contains similar content for b
(NB: not a JSON, just a part!)
So, for your tests you can build test data by simple concatenation of parts like
String ab_json = "" + readAsText("a.json-part") + "," + readAsText("b.json-part") + "";
String a_not_b_json = "" + readAsText("a.json-part") + "";
and so on.
In this case you can combine your fields as you want and can be sure you didn't miss any file in case if some field is changed.
Like for me, your coworker is right.
Create two files: a.json-part
and b.json-part
. Let's a.json-part
contains
"a": .....
and b.json-part
contains similar content for b
(NB: not a JSON, just a part!)
So, for your tests you can build test data by simple concatenation of parts like
String ab_json = "" + readAsText("a.json-part") + "," + readAsText("b.json-part") + "";
String a_not_b_json = "" + readAsText("a.json-part") + "";
and so on.
In this case you can combine your fields as you want and can be sure you didn't miss any file in case if some field is changed.
answered Mar 28 at 23:07
Bor LazeBor Laze
2,1868 silver badges18 bronze badges
2,1868 silver badges18 bronze badges
add a comment
|
add a comment
|
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%2f55406692%2fusing-json-unit-test-files-in-a-java-program%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
It kinda depends. If the files are super big, then just one. If they are smaller, then it depends on if it takes longer to change a value, or add a value. 4 files will take longer to load though.
– JustAFellowCoder
Mar 28 at 20:58
My vote is no files -- If this were me I'd want the test to just inject the json directly, so I don't have to keep the contents of the files in sync with my test over time. I might consider using files if the data was really large. If your class under test requires you provide a file, it's probably doing too much anyway, and should be split up.
– Gus
Mar 28 at 21:01
Also consider cost of maintenance. If those two fields turn into four and you need to test all combinations, you have to supply 16 files.
– Not a JD
Mar 28 at 21:09
my 4 files are fairly small (60 lines each)
– Mark
Mar 28 at 21:37
60 lines, not much of a problem either way won't make a difference. Completely arbitrary. Just different ways you'll have to code it.
– JustAFellowCoder
Mar 29 at 0:43