私はここで新しいです、みなさん、こんにちは。私はすでにこれに関するいくつかの情報を探しましたが、何も見つかりませんでしたが、私が見逃しているのは単純なことだと確信しています。リンクリスト番号を使用して算術演算を実行する、テストしようとしている単純なプログラムがあります。私のテストケースはランダムなint値を生成し、プリミティブな加算、減算、乗算を使用して答えをチェックします。私が今見ている問題は、テストを繰り返し実行すると、プリミティブ演算が誤った結果を返すことですが、リンクリストの数値演算は正しいです。junitテストケースを繰り返し実行する間にクリーンアップされない変数がメモリ内にある可能性はありますか?正しく動作する場合と動作しない場合があります。
ところで、私はEclipseとJUnit4を使用しています。これが私のテストコードです。助けてくれてありがとう!
import static org.junit.Assert.*;
import java.util.Random;
import org.junit.Test;
public class NumberTest {
@Test
public void testRandomIntAddition1() {
Random generator = new Random();
int i = generator.nextInt();
int j = generator.nextInt();
Number a = new Number(""+i);
Number b = new Number(""+j);
Number sum = a.add(b);
System.out.printf("The first number is %d\n", i);
System.out.printf("The second number is %d\n", j);
System.out.printf("The primative sum is %d\n", i + j);
System.out.printf("The Number sum is %s\n\n", sum.toString());
assertEquals(sum.toString(),""+ (i+j));
}
@Test
public void testRandomIntSubtraction1() {
Random generator = new Random();
int i = generator.nextInt();
int j = generator.nextInt();
int k = i - j;
Number a = new Number(""+i);
Number b = new Number(""+j);
Number diff = a.subtract(b);
System.out.printf("The first number is %d\n", i);
System.out.printf("The second number is %d\n", j);
System.out.printf("The primative diff is %d\n", k);
System.out.printf("The Number diff is %s\n\n", diff.toString());
assertEquals(diff.toString(),"" + k);
}
}
プリミティブ減算の誤った結果を示すサンプル出力は次のとおりです。
The first number is -504267212
The second number is 454054464
The primitive sum is -50212748
The Number sum is -50212748
The first number is 1820929887
The second number is -1488686395
The primitive diff is -985351014
The Number diff is 3309616282