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/

Reply via email to