0

I am writing a test program and in it I write the results to 2 different files. 1 file for the specific test and 1 file that keeps a running total of the all the results. Rather than writing the logic out for each of the 20 tests that I have, I would like to create a method that will return an array of BufferedWriters. Is this possible?

Here is the code that I have been working with:

    public BufferedWriter[] createTestFile(String fileName, String fileName2) throws IOException{
    File directory = null;
    File photoDirectory = null;
    BufferedWriter bufWrite=null; 
    BufferedWriter bw2 = null;

    BufferedWriter[] bw[]=null; 

    SimpleDateFormat photoFormat = new SimpleDateFormat("ddMMyy-hhmmss");

    new SimpleDateFormat("MMMddyy-hhmmss");
    /*
     * This sections checks the phone to see if there is a SD card. if
     * there is an SD card, a directory is created on the SD card to
     * store the test log results. If there is not a SD card, then the
     * directory is created on the phones internal hard drive
     */
    // if there is no SD card
    if (Environment.getExternalStorageState() == null) {
        directory = new File(Environment.getDataDirectory()
                + "/RobotiumTestLog/");
        photoDirectory = new File(Environment.getDataDirectory()
                + "/Robotium-Screenshots/");

        // if no directory exists, create new directory
        if (!directory.exists()) {
            directory.mkdir();
        }

        // if phone DOES have sd card
    } else if (Environment.getExternalStorageState() != null) {
        // search for directory on SD card
        directory = new File(Environment.getExternalStorageDirectory()
                + "/RobotiumTestLog/");
        photoDirectory = new File(
                Environment.getExternalStorageDirectory()
                        + "/Robotium-Screenshots/");

        // if no directory exists, create new directory to store test
        // results
        if (!directory.exists()) {
            directory.mkdir();
        }
    }// end of SD card checking

    /*
     * Checks for existing test logs, and if they exist, they are
     * deleted, creating a new test log for each testing method
     */
    File logResults = new File(directory, fileName);
    File totLogRes = new File(directory, fileName2); 
    if (logResults.exists()) {
        logResults.delete();
    }
    if (!logResults.exists()) {
        logResults.createNewFile();
    }
    //check total Log
    if (!totLogRes.exists()) {
        totLogRes.createNewFile();
    }
    /*
     * This creates the writing stream to log the test results This
     * stream MUST be closed, using bw.close(), for the test results to
     * show on the log. If the stream is not closed, when you open the
     * text file that the results are stored in, the page will be blank.
     */

        //This is where I have a problem. I'm not sure how to return an array of bufferedwriters
    bufWrite = new BufferedWriter(new FileWriter(logResults, true));
    bw2= new BufferedWriter(new FileWriter(totLogRes, true)); 

    bw[0]=bufWrite; <---- get an error here saying I can't go from array to bw.

    return bw[]; 

I have tried a couple different ways, but I get errors. I was wondering if someone could point me in the right direction.

BlackHatSamurai
  • 23,275
  • 22
  • 95
  • 156
  • You may want to look at using JUnit which provides a testing framework for Java apps. I've only used it for desktop development. There is probably a version available for Android, but I'm not 100% sure. – Code-Apprentice Jul 26 '12 at 18:21

2 Answers2

1

You should change the declaration of bw to:

BufferedWriter[] bw=new BufferedWriter[2]; 

Right now, you are declaring and array of arrays of BufferedWriter. And you are not allocating it...

Also, the return statement should be

return bw;
Matthieu
  • 16,103
  • 10
  • 59
  • 86
1

A couple of errors:

BufferedWriter[] bw[]=null;

To define an array, it is like int a[];, so

BufferedWritter bw[] = null;

Also, an array is an object and you need to create it with new

BufferedWritter bw[] = new BufferedWriter[2];

SJuan76
  • 24,532
  • 6
  • 47
  • 87