Cat Dev It!

develop apps

AIDE (Android Java IDE) JUnit Test Tutorial part2

前回に引き続き、JUnit。
さすがにあのやり方はだるすぎます・・・
せめて、Terminal Emulatorを使わずにやってみます。
f:id:catdevit:20120811154357p:plain

package com.mycompany.myapptest;

import android.app.*;
import android.os.*;
import android.widget.*;
import java.io.*;

import java.lang.Process;
import android.view.*;

public class MainActivity extends Activity
{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        getDefaultTextView().setText(executeTest());
    }
    
    private String executeTest()
    {
        String result = "";
        try
        {
            ProcessBuilder pb = new ProcessBuilder(
                "am", "instrument", "-w", "-e", "class",
                "com.mycompany.myapptest.HelloTest",
                "com.mycompany.myapptest/android.test.InstrumentationTestRunner");
            Process p = pb.start();
            InputStream input = p.getInputStream();
            byte[] buffer = new byte[1024 * 4];
            int readBytes = 0;
            StringBuilder sb = new StringBuilder();
            
            while ((readBytes = input.read(buffer)) > 0)
            {
                sb.append(new String(buffer, 0, readBytes));
            }
            result = sb.toString();
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return result;
    }
    
    private TextView getDefaultTextView()
    {
        ViewGroup root = (ViewGroup)findViewById(android.R.id.content);
        LinearLayout main = (LinearLayout)root.getChildAt(0);
        TextView textView = (TextView)main.getChildAt(0);
        return textView;
    }
}

こんな感じ。

Yeah!
できました!
f:id:catdevit:20120811154403p:plain