Limpep
Limpep

Reputation: 499

Printing JUnit result to file

I want to print the results of my JUnit tests to a .txt file.

Following is my code:

try {
    //Creates html header 
    String breaks = "<html><center><p><h2>"+"Test Started on: "+df.format(date)+"</h2></p></center>";

    //Creating two files for passing and failing a test
    File pass = new File("Result_Passed-"+df.format(date)+ ".HTML");
    File failed = new File("Result_Failed-"+df.format(date)+ ".HTML");
    OutputStream fstreamF = new FileOutputStream(failed, true);
    OutputStream fstream = new FileOutputStream(pass, true);
    PrintStream p = new PrintStream(fstream);
    PrintStream  f= new PrintStream(fstreamF);

    //appending the html code to the two files
    p.append(breaks);
    f.append(breaks);

    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

Following is my example testcase:

public void test_001_AccountWorld1() {

    // Open the MS CRM form to be tested.
    driver.get(crmServerUrl + "account");
    nameOfIFRAME = "IFRAME_CapCRM";

    PerformCRM_World1("address1_name", "address1_name", "address1_line1", "address1_postalcode", true);

    assertEquals(firstLineFromForm.toString(), "");
    assertEquals(secondLineFromForm.toString(), "Donaustadtstrasse Bürohaus 1/2 . St");
    assertEquals(postcodeFromForm.toString(), "1220");       

}

I've tried p.append() but doesn't work. Help please.

Upvotes: 6

Views: 11138

Answers (4)

Dan
Dan

Reputation: 421

When I am looking to do this, I run it command line, with a custom runner, running a custom suite. Very simple, almost no code. The suite just has the test you want to run, and the runner is below.. You can see the logic there for printing out. My code just prints out errors, but you can adapt this easily to print everything to file. Essentially you are just looking in the result object collection of failures and successes.

public class UnitTestRunner {
static JUnitCore junitCore;
static Class<?> testClasses;



public static void main(String[] args) {   
    System.out.println("Running Junit Test Suite.");
     Result result = JUnitCore.runClasses(TestSuite.class);
      for (Failure failure : result.getFailures()) {
         System.out.println(failure.toString());
      }
      System.out.println("Successful: " + result.wasSuccessful() + 
        " ran " + result.getRunCount() +" tests");
   }

}

Upvotes: 1

Jalal Kiswani
Jalal Kiswani

Reputation: 755

In general , you can redirect your output to file as follows :
- if you are using eclipse : Run configuration-->Commons-->OutputFile-->Your file name enter image description here

  • If you run form the command line , just use : java ..... >output.txt

Upvotes: 3

Martijn Verburg
Martijn Verburg

Reputation: 3305

You're probably re-inventing the wheel here. ANT, Maven, X build tool or your CI server should be doing this for you.

Upvotes: 1

darioo
darioo

Reputation: 47183

I believe this functionality already exists. Read this part of JUnit's FAQ.

Upvotes: 0

Related Questions