Hi JC,

Your are asking how to use logs with unit tests. Let's talk about the two ways 
you might be using logging, because each has a different answer.

In general, a unit test should use JUnit assert calls to verify that behavior 
is as expected. No-one ever looks at output from tests unless a test fails. We 
have some old tests that "test" by dumping stuff to the console or a log. But, 
that is not much of a test at all since we have no mechanism to verify that 
output.

On the other hand, you might want to enable logging for help in debugging. For 
example, I use unit tests to debug my code and enable detailed logging when 
things go wrong.

To do this, you can use the LogFixture class to enable logging for a specific 
test for a particular module. Thanks much to Vitalii for providing the links. 
You can also check out the ExampleTest class for a concrete example of how to 
use the various fixtures.

The main reason for the log fixture is that Maven Surefire runs tests in a 
shared JVM: when using logback.xml, you can't set the log level for one test 
without setting the log level for all tests.

The log fixture works around that by mucking with the LogBack config at runtime 
to turn on logging exactly when you want it, then turn it off again afterwards 
so that other tests run at the original log level.

I hope this helps...

Thanks,
- Paul

 

    On Friday, October 12, 2018, 10:11:44 AM PDT, Vitalii Diravka 
<[email protected]> wrote:  
 
 Hi Jean-Claude!

You should use logback-test.xml for tests.
Paul has documented it very well in [1] and [2].

[1]
https://github.com/apache/drill/blob/master/docs/dev/TestLogging.md#default-test-log-levels
[2]
https://github.com/apache/drill/blob/master/docs/dev/ClusterFixture.md#controlling-logging

On Fri, Oct 12, 2018 at 3:52 PM Jean-Claude Cote <[email protected]> wrote:

> I'm trying to output trace information in my junit test cases. I'm using
> the ClusterFixture
>
> startCluster(ClusterFixture.builder(dirTestWatcher).maxParallelization(1));
>
> I've put my logback.xml in src/test/resources
>
> and feed in these environment variables at the command mvn launch.
>
> mvn --offline clean install -Dlog.path=/tmp/sqlline.log
> -Dlog.query.path=/tmp/sqlline_queries.json
>
> But no output files are created. How can I accomplish this?
>
> Thank you
> jc
>
  

Reply via email to