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

"Malte Finsterwalder [email protected] [junit]" <[email protected]> Tue, 13 Sep 2016 11:53:52 +0200
Newsgroups gmane.comp.java.junit.user
Message-ID <CALS12-Nu7cND0WyPepOGr=Tzqmfwi4ss8Yi-=jLEUNWwr-Y0ig@mail.gmail.com>
--089e0122f2be21ba52053c60971f
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

There is no simple, general answer to this question. Some ideas that come
to mind... In the order which I would try first.
Maybe you can address the problem on the infrastracture-level, as Lothar
suggested. (Copy the DB etc.)
Mechanisms like Docker-Container might help here, too!
You might be able to execute your tests in a transaction, which is then
rolled back at the end of the test.
You may be able to just add testdata to the DB and don't worry about it,
since it does not harm other tests.
You may be able to separate all new testdata from the data that is present,
so that you can remove it safely (i.e. IDs in certain ranges etc.)
And if all else fails, I also reacted a mechanism in a project before, that
remembered all the test data created during a test and removed it
individually in a teardown, but that's a lot of work and rather fragile.
Not really recommended.

Greetings,
   Malte

On 12 September 2016 at 17:59, [email protected] [junit] <
[email protected]> wrote:

>
>
> I'd like to be able to run some tests against fully populated QA
> databases. I can't find the right combination of set-up and tear-down to
> erase ALL the data created and inserted in the course of the test but not
> delete other data that preexists in the Db.
>
>
> Can this be done?
>
>
>=20
>

--089e0122f2be21ba52053c60971f
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">There is no simple, general answer to this question. Some =
ideas that come to mind... In the order which I would try first.<div>Maybe =
you can address the problem on the infrastracture-level, as Lothar suggeste=
d. (Copy the DB etc.)</div><div>Mechanisms like Docker-Container might help=
 here, too!</div><div>You might be able to execute your tests in a transact=
ion, which is then rolled back at the end of the test.<br></div><div>You ma=
y be able to just add testdata to the DB and don&#39;t worry about it, sinc=
e it does not harm other tests.</div><div>You may be able to separate all n=
ew testdata from the data that is present, so that you can remove it safely=
 (i.e. IDs in certain ranges etc.)</div><div>And if all else fails, I also =
reacted a mechanism in a project before, that remembered all the test data =
created during a test and removed it individually in a teardown, but that&#=
39;s a lot of work and rather fragile. Not really recommended.<br></div><di=
v><br></div><div>Greetings,</div><div>=C2=A0 =C2=A0Malte</div></div><div cl=
ass=3D"gmail_extra"><br><div class=3D"gmail_quote">On 12 September 2016 at =
17:59, <a href=3D"mailto:[email protected]">[email protected]</a> [juni=
t] <span dir=3D"ltr">&lt;<a href=3D"mailto:[email protected]" target=3D=
"_blank">[email protected]</a>&gt;</span> wrote:<br><blockquote class=
=3D"gmail_quote" style=3D"margin:0 0 0 .8ex;border-left:1px #ccc solid;padd=
ing-left:1ex">






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




<div>





<br><br>




<p><span>I&#39;d like to be able to run some tests against fully populated =
QA databases. I can&#39;t find the right combination of set-up and tear-dow=
n to erase ALL the data created and inserted in the course of the test but =
not delete other data that preexists in the Db.=C2=A0</span></p><p><span><b=
r></span></p><p><span>Can this be done?</span></p>





<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=3D24750/stime=3D1473852428" 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=3DX3oDMTJlN2RwNGNuBF9TAzk3MzU5NzE0BGdycElkAzI0MjMzMjgEZ3Jwc3BJZAM=
xNzA1MDA2OTA1BHNlYwN2dGwEc2xrA3ZnaHAEc3RpbWUDMTQ3Mzg1MjQyOA--" 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=3DX3oDMTJmcGU0ZjIzBF9TAzk3MzU5NzE0BGdycElkAzI0MjMzMjgE=
Z3Jwc3BJZAMxNzA1MDA2OTA1BHNlYwN2dGwEc2xrA3ZtYnJzBHN0aW1lAzE0NzM4NTI0Mjg-" 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=3DX3oDMTJkN3ZxamdjBF9TAzk3ND=
c2NTkwBGdycElkAzI0MjMzMjgEZ3Jwc3BJZAMxNzA1MDA2OTA1BHNlYwNmdHIEc2xrA2dmcARzd=
GltZQMxNDczODUyNDI4" 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>

--089e0122f2be21ba52053c60971f--