クラスがあります。
そのクラスのコンストラクターで変数を初期化します。
ループを含むメソッドを呼び出し、while
毎回変数をインクリメントします。
メソッドが呼び出された後(そしてwhileループを1回通過した後)に変数の値をチェックするテストを作成しました。
public class ThreadGenerator implements Runnable {
private int requests;
private int limit;
public ThreadGenerator() {
requests = 0;
}
public void setRequestLimit(int anyLimit) {
this.limit = anyLimit;
}
public void generateThread() {
new Thread(this).start();
}
public void run() {
while(requests < limit) {
try {
// do some stuff
requests++;
// close some stuff
} catch (IOException e) {
e.printStackTrace();
}
}
}
public int getRequests() {
return requests; // calling this method from my tests always returns 0
}
私のテストでは、このクラスの新しいインスタンスを作成し、そのクラスでこのメソッドを呼び出すと、正しく実行され、リクエストカウンターが正しくインクリメントされます。私はそれを確認するためにいくつかのprintステートメントを試しました。しかし、テストでオブジェクトを呼び出すgetRequests
と、 ThreadGenerator
初期化された量である0が返されます。
私のテストコード:
ThreadGenerator threadGenerator = new ThreadGenerator();
threadGenerator.setRequestLimit(1);
threadGenerator.generateThread();
assertEquals(threadGenerator.getRequests(), 1);
コンストラクターで初期化したこの変数を変更して、テストスイートでアクセスするにはどうすればよいですか?