我是新来的,大家好。我已经四处寻找有关此的一些信息,但没有找到任何东西,但我确信这是我缺少的一些简单的东西。我有一个简单的程序,我正在尝试测试它使用链表数字来执行算术。我的测试用例生成随机 int 值并使用原始加法、减法、乘法检查答案。我现在看到的问题是,当我重复运行测试时,原始操作返回不正确的结果,但我的链表数算术是正确的。内存中是否有可能在重复 junit 测试用例运行之间没有被清理的变量?有时它可以正常工作,有时却不能。
顺便说一句,我正在使用 Eclipse 和 JUnit 4。这是我的测试代码。谢谢你的帮助!
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