I have also been annoyed with what you describe, and have wondered how
to fill the gap of missing coverage.

Outside of copying the testcase and dynamically changing the log level
inside of it, which in addition to being burdensome, also offends my
DRY sensibility, the best idea I've had about this involves a
relatively new feature of JUnit called @Theories[1].

You could create @DataPoints {Level.ALL, Level.NONE} and then pass
them in to your test method. Then you dynamically set the class under
test's Logger.Level with the data point. I think this ought to work
just fine unless you execute your tests in parallel mode, as most
Logger declarations are as static instances.

There's one other problem which has prevented me from exploiting this
technique: @Theories needs a dedicated @RunWith(Theories.class). Which
would tend to preclude execution under @RunWith(Arquillian.class)
since @RunWith takes a singular runner argument, unless Aslak/someone
makes some tweaks[2].

[1] https://github.com/junit-team/junit/wiki/Theories
[2] https://issues.jboss.org/browse/ARQ-561


On Wed, Feb 12, 2014 at 3:30 PM, Benoît Berthonneau
<ben...@berthonneau.com> wrote:
> Hi all,
>
>
>
> I need your opinion/way to tackle the following problem:
>
> In many projects we use a Logger (doesn't matter which implementation). It
> is often recommend to test if the debug level is activated before logging a
> debug trace like the following:
>
> if (logger.isDebugEnabled()) {
>
>     logger.debug("blah " + i + " in the loop that contains " + max);
>
> }
>
>
>
> Now when you run unit tests on this kind of code you need to make a choice:
> run tests with INFO level or run tests with ALL traces activated. I choose
> the second option in order to:
>
> *         Check that debug traces doesn't throw unwanted exception (like
> NPE)
>
> *         Have a better code coverage in term of covered lines
>
>
>
> But in term of branches coverage we could never have a 100% :(
>
>
>
> To me the only way to cover this is to run the tests suite 2 times: one with
> INFO traces configured, and another one with ALL traces activated.
>
> Did you face this issue and how did you solve it ?
>
>
>
> Thanks,
>
> Benoît.
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to