1

私はこのコードを持っており、ハンドラーをセットアップし、このクラスがうまく機能していることを出力ストリームと入力ストリームで実行するメソッドを呼び出すかどうかをテストしたいと思います。つまり、入力ストリームで何かを受け取り、それを別のものに変更して出力ストリームに送信し、ハンドラーによって送信されたメッセージが正しいかどうかを確認します。どうすればそれを行うことができますか、または入出力ストリームとハンドラーをモックできますか?

テストしたいTestClass。

import android.os.Handler;
import android.util.Log;

public class TestClass {

protected String description;

protected String responce;
protected String valueResponce;
protected int done;
protected Handler listener;
protected int identifier;
protected int target;

public static final int STATE_GOOD = 0;
public static final int STATE_FAILED = 1;
public static final int STATE_ATDPN = 2;

public void addListener(Handler listener) {
    this.listener = listener;       
}

protected void preparation() {
    identifier = Integer.parseInt(this.getRequest(), 16);
    target = HandlerLabels.MESSAGE_DATA;
}

protected void send(OutputStream outStream) {
    String mes = this.getRequest() + '\r';
    byte[] send = mes.getBytes();
    try {
        outStream.write(send);
    } catch (IOException e) {
        done = STATE_FAILED;
    }
}

protected void read(InputStream inStream) {
    try {

        int data = inStream.read();
        String output = "";
        while (data != 62) {
            if (data != 10) {
                if (data != 13) {
                    output += (char) data;
                }
            }
            data = inStream.read();

        }
        responce = output;

    } catch (IOException e) {
        done = STATE_FAILED;
    }

}

protected void noticeListener() {
    if (listener == null) {
        Log.d(tag, "listener null");
    } else {
        listener.obtainMessage(target, identifier, -1, valueResponce)
                .sendToTarget();

    }
}

protected boolean control(String value){
    if(value.length() == 0){
        done = STATE_FAILED;
        return false;
    }
    return true;
}

public int run(InputStream inStream, OutputStream outStream) {
    preparation();

    if (done == STATE_GOOD)
        send(outStream);

    if (done == STATE_GOOD)
        read(inStream);

    if (control(responce))
        valueResponce = calculateValue(responce);

    if (done == STATE_GOOD)
        noticeListener();

    return done;
}

protected String calculateValue(String value) {
    String[] arr = value.split(" ");
    int A = Integer.parseInt(arr[2], 16);
    return String.valueOf(((A*100)/255));   
}

public String getRequest() {
    return "01041";
}

public String getDescription() {
    return description;
}

public int isDone() {
    return done;
}

public void setDone(int done) {
    this.done = done;
}

public String getResponce() {
    return responce;
}

public void setResponce(String responce) {
    this.responce = responce;
}
}
4

0 に答える 0