开发者

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(postcodeFromFo开发者_StackOverflow社区rm.toString(), "1220");       

}

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


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

Printing JUnit result to file

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


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


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");
   }

}


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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜