Dan, Yeah this is a good housekeeping item to bring up. My view here is that B is the only answer. Unit tests should not be calling out to external services - period.
Thanks Joe On Mon, Oct 12, 2015 at 8:17 PM, dan bress <[email protected]> wrote: > Devs, > While working on integrating and testing the work Yu did for > NIFI-774/DeleteS3Object, I noticed that a few of the unit tests for the > processors in that AWS bundle(Put and Fetch S3) actually interact with S3 > directly, and were marked as @Ignore. If I wanted to un @Ignore them and > actually run them I needed to set up an AWS account, then copy the > credentials into an aws-credentials.properties file and put that in my home > directory to get the tests to pass. This dashed my hopes of a relatively > simple merge and turned it into a bit of work for me. I'm not blaming Yu > or anyone for this, just wanted to open up a discussion on better ways of > solving this. > > Problem: > @Ignore'd tests don't get run, probably ever. Why? Because running them > is a pain in the butt, I agree with NIFI-438[1] "If tests could talk they > would say don't @Ignore me". I appreciate that there are special > circumstances for using this, but it would probably benefit everyone if we > sure we used it only for the truly special circumstances. > > > Solutions: > a. Run these tests using the failsafe plugin[2] instead of the surefire > plugin. This way they get run every time, and if they fail that > information gets reported but it does not stop the build. > b. Mock out the service(I appreciate that this may not always be possible) > c. Provide instructions somewhere so that someone with no experience with > these processors/tests can run them. > > Anyone have thoughts on this? > My votes would be B, and if that is not possible A and C. > > Thanks, > Dan > > [1] https://issues.apache.org/jira/browse/NIFI-438 > [2] https://maven.apache.org/surefire/maven-failsafe-plugin/
