大家好
我有一个软件,我想运行很多次,每个软件都是在类的构造函数中设置的类字段的特定值。
例如,代码中的某处是
public class Stuff
{
private double importantVal;
public Stuff(double val)
{
this.importantval = val;
}
public double doStuff()
{
return 4 * importantVal;
}
}
这个类和方法在程序/调用堆栈中很远,所以我不能单独调用doStuff几次。
我想测试程序中各种值的importantVal,可能是将它们放在一个文件中并迭代它们。我计算了很多次运行程序的简单方法,但我不知道如何替换不同的importantVal值。如果所有其他方法都失败了,我总是可以编写一个修改源代码的脚本,但这会让人感觉很丑陋。是否有一个更优雅的解决方案涉及注射,或沿着这些线?
答案 0 :(得分:3)
为了说明人们在这里告诉你的内容,以下是测试用例的外观: -
public class StuffTest {
@Test
public void testDoStuff_Zero(){
Stuff stuff = new Stuff(0);
assertEquals(0, stuff.doStuff());
}
@Test
public void testDoStuff_One(){
Stuff stuff = new Stuff(1);
assertEquals(4, stuff.doStuff());
}
@Test
public void testDoStuff_NegativeValue(){
Stuff stuff = new Stuff(-10);
assertEquals(-40, stuff.doStuff());
}
@Test
public void testDoStuff_PositiveValue(){
Stuff stuff = new Stuff(10);
assertEquals(40, stuff.doStuff());
}
@Test
public void testDoStuff_DecimalValue(){
Stuff stuff = new Stuff(1.1);
assertEquals(4.4, stuff.doStuff());
}
}
答案 1 :(得分:0)
public class StuffRunner {
public static void main(String[] args) {
double x = 0.0d;
for (int i = 0; i < 100; ++i) {
Stuff s = new Stuff(x);
if (s.doStuff() != 4 * x) {
System.out.print("Error, unexpected value. X=");
System.out.println(x);
}
x = x + 1.22;
}
}
}
答案 2 :(得分:0)
你有Stuff类的多个实例吗?如果没有,也许你可以通过使importantVal静态来尝试“注入”这些值?或者注入多个值使用List?
public class Stuff{
private static List<Double> testVals = new LinkedList()<Double>;
private double importantVal;
public Stuff(double val)
{
this.importantval = val;
}
public static addTest(double test){
testVals.add(test);
}
public double doStuff()
{
return 4 * testVals.removeFirst();
}
}