Re: Re: Is it possible to write tests that delete ONLY the data they create?

"Malte Finsterwalder [email protected] [junit]" <[email protected]> Thu, 15 Sep 2016 09:32:02 +0200
Newsgroups gmane.comp.java.junit.user
Message-ID <CALS12-NQd6fj+RQckGWp4cs9OWyEy7c+XEPLfLz=TmxddRve-w@mail.gmail.com>
--94eb2c0715b49181f8053c86d75e
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

I totally agree.

One sidenote: We also remove Data in our setup-methods and not in our
teardowns. So every test makes sure that there is no data laying around
that would hinder it's exeution before it is executed. Our experience is,
that this is more robust.

Greetings,
   Malte

On 14 September 2016 at 14:14, [email protected] [junit] <
[email protected]> wrote:

>
>
>
> I think you should focus on setUp, instead of tearDown. The absolute best
> longterm solution (in my opinion) is to let every test be responsible for
> setting up its own data. If you succeed with that, you can simply wipe th=
e
> data store (or even create it from scratch) before each test.
> This may require some work if your existing tests are dependent on
> existing data, but more often than not it's totally worth it. In the
> process you will discover (and document) what is needed to create the dat=
a
> in your data store.
> Most importantly, the data in your "fully populated QA database" is
> probably created using a version (or many difversions) of your program th=
at
> is not current. This may cause all kinds of problems. Having each test
> create all its data solves this situation perfectly.
>
>
>
>
>
>=20
>

--94eb2c0715b49181f8053c86d75e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable





<head>

<style type=3D"text/css">
<!--

/* start of attachment style */
       .ygrp-photo-title{
         clear: both;
         font-size: smaller;
         height: 15px;
         overflow: hidden;
         text-align: center;
         width: 75px;
       }
       div.ygrp-photo{
         background-position: center;
         background-repeat: no-repeat;
         background-color: white;
         border: 1px solid black;
         height: 62px;
         width: 62px;
       }

       div.photo-title=20
         a,
         div.photo-title a:active,
         div.photo-title a:hover,
         div.photo-title a:visited {
           text-decoration: none;=20
       }

       div.attach-table div.attach-row {
         clear: both;
       }

       div.attach-table div.attach-row div {
         float: left;
         /* margin: 2px;*/
       }

       p {
         clear: both;
         padding: 15px 0 3px 0;
	 overflow: hidden;
       }

       div.ygrp-file {
         width: 30px;
         valign: middle;
       }
       div.attach-table div.attach-row div div a {
         text-decoration: none;
       }

       div.attach-table div.attach-row div div span {
         font-weight: normal;
       }

       div.ygrp-file-title {
         font-weight: bold;
       }
 /* end of attachment style */
        -->
        </style>
        </head>
<html>
<head>
<style type=3D"text/css">
<!--
#ygrp-mkp {
  border: 1px solid #d8d8d8;
  font-family: Arial;
  margin: 10px 0;
  padding: 0 10px;
}

#ygrp-mkp hr {
  border: 1px solid #d8d8d8;
}

#ygrp-mkp #hd {
  color: #628c2a;
  font-size: 85%;
  font-weight: 700;
  line-height: 122%;
  margin: 10px 0;
}

#ygrp-mkp #ads {
  margin-bottom: 10px;
}

#ygrp-mkp .ad {
  padding: 0 0;
}

#ygrp-mkp .ad p {
  margin: 0;
}

#ygrp-mkp .ad a {
  color: #0000ff;
  text-decoration: none;
}
-->
</style>
</head>
<body>



<!-- |**|begin egp html banner|**| -->

<br><br>

<!-- |**|end egp html banner|**| -->


<div dir=3D"ltr">I totally agree.<div><br></div><div>One sidenote: We also =
remove Data in our setup-methods and not in our teardowns. So every test ma=
kes sure that there is no data laying around that would hinder it&#39;s exe=
ution before it is executed. Our experience is, that this is more robust.</=
div><div><br></div><div>Greetings,</div><div>=C2=A0 =C2=A0Malte</div></div>=
<div class=3D"gmail_extra"><br><div class=3D"gmail_quote">On 14 September 2=
016 at 14:14, <a href=3D"mailto:[email protected]">[email protected]<=
/a> [junit] <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]" =
target=3D"_blank">[email protected]</a>&gt;</span> wrote:<br><blockquot=
e class=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc sol=
id;padding-left:1ex">






=20=20=20=20=20=20=20=20




<div>





<br><br>




<div><br></div><div>I think you should focus on setUp, instead of tearDown.=
 The absolute best longterm solution (in my opinion) is to let every test b=
e responsible for setting up its own data. If you succeed with that, you ca=
n simply wipe the data store (or even create it from scratch)=C2=A0<span>be=
fore</span> each test.</div><div>This may require some work if your existin=
g tests are dependent on existing data, but more often than not it&#39;s to=
tally worth it. In the process you will discover (and document) what is nee=
ded to create the data in your data store. =C2=A0=C2=A0</div><div>Most impo=
rtantly, the data in your &quot;fully populated QA database&quot; is probab=
ly created using a version (or many difversions) of your program that is no=
t current. This may cause all kinds of problems. Having each test create al=
l its data solves this situation perfectly<span style=3D"word-spacing:norma=
l;line-height:1.25">. =C2=A0=C2=A0</span><span style=3D"word-spacing:normal=
;line-height:1.25">=C2=A0</span></div><div><br></div><div><br></div><div>=
=C2=A0</div>





<br>


<br>




<div width=3D"1" style=3D"color:white;clear:both"></div>



</blockquote></div><br></div>




<!-- |**|begin egp html banner|**| -->

<br>


<br>

<!-- |**|end egp html banner|**| -->


<div width=3D"1" style=3D"color: white; clear: both;"/>__._,_.___</div>

=20=20=20=20=20=20
=20=20

=20=20=20=20
    <div id=3D"fromDMARC" style=3D"clear:both; margin-top: 10px;">
         <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; backgroun=
d-color:#E3E3E3;">
         Posted by: Malte Finsterwalder &lt;[email protected]&gt;   =
      <hr style=3D"height:2px ; border-width:0; color:#E3E3E3; background-c=
olor:#E3E3E3;">
    </div>
<!-- Start Recommendations -->
<!-- End Recommendations -->



<!-- |**|begin egp html banner|**| -->

  <img src=3D"http://geo.yahoo.com/serv?s=3D97476590/grpId=3D2423328/grpspI=
d=3D1705006905/msgId=3D24752/stime=3D1473927288" width=3D"1" height=3D"1"> =
<br>

<!-- |**|end egp html banner|**| -->

=20=20
<!-- |**|begin egp html banner|**| -->

<br>



=20=20=20
=20=20=20=20=20
=20
        <!-- |**|begin egp html banner|**| -->
        <div id=3D"ygrp-vital" style=3D"background-color: #f2f2f2; font-fam=
ily: Verdana; font-size: 10px; margin-bottom: 10px; padding: 10px;">

        <span id=3D"vithd" style=3D"font-weight: bold; color: #333; text-tr=
ansform: uppercase; "><a href=3D"https://groups.yahoo.com/neo/groups/junit/=
info;_ylc=3DX3oDMTJldTVjYWJhBF9TAzk3MzU5NzE0BGdycElkAzI0MjMzMjgEZ3Jwc3BJZAM=
xNzA1MDA2OTA1BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ3MzkyNzI4OA--" style=3D"tex=
t-decoration: none;">Visit Your Group</a></span>

     <ul style=3D"list-style-type: none; margin: 0; padding: 0; display: in=
line;">
            <li style=3D"border-right: 1px solid #000; font-weight: 700; di=
splay: inline; padding: 0 5px; margin-left: 0;">
      <span class=3D"cat"><a href=3D"https://groups.yahoo.com/neo/groups/ju=
nit/members/all;_ylc=3DX3oDMTJmOGM0bDdkBF9TAzk3MzU5NzE0BGdycElkAzI0MjMzMjgE=
Z3Jwc3BJZAMxNzA1MDA2OTA1BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzE0NzM5MjcyODg-" s=
tyle=3D"text-decoration: none;">New Members</a></span>
      <span class=3D"ct" style=3D"color: #ff7900;">1</span>
    </li>
                                              </ul>
  </div>


<div id=3D"ft" style=3D"font-family: Arial; font-size: 11px; margin-top: 5p=
x; padding: 0 2px 0 0; clear: both;">
  <a href=3D"https://groups.yahoo.com/neo;_ylc=3DX3oDMTJkZzF2ZjZqBF9TAzk3ND=
c2NTkwBGdycElkAzI0MjMzMjgEZ3Jwc3BJZAMxNzA1MDA2OTA1BHNlYwNmdHIEc2xrA2dmcARzd=
GltZQMxNDczOTI3Mjg4" style=3D"float: left;"><img src=3D"http://l.yimg.com/r=
u/static/images/yg/img/email/new_logo/logo-groups-137x15.png" height=3D"15"=
 width=3D"137" alt=3D"Yahoo! Groups" style=3D"border: 0;"/></a>
  <div style=3D"color: #747575; float: right;"> &bull; <a href=3D"https://i=
nfo.yahoo.com/privacy/us/yahoo/groups/details.html" style=3D"text-decoratio=
n: none;">Privacy</a> &bull; <a href=3D"mailto:junit-unsubscribe@yahoogroup=
s.com?subject=3DUnsubscribe" style=3D"text-decoration: none;">Unsubscribe</=
a> &bull; <a href=3D"https://info.yahoo.com/legal/us/yahoo/utos/terms/" sty=
le=3D"text-decoration: none;">Terms of Use</a> </div>
</div>

<!-- |**|end egp html banner|**| -->

  </div> <!-- ygrp-msg -->

=20=20=20


  <br>

<!-- |**|end egp html banner|**| -->


<div style=3D"color: white; clear: both;"/>__,_._,___</div>
</body>

</html>

--94eb2c0715b49181f8053c86d75e--