好的,所以我第一次使用JUnit。我的ListOfFraction类中有两个公共函数:add和delete。它们列在ListOfFractionTest类中,我将对此列表进行测试(它是一个大小为2的可增长列表)这就是我测试三个分数的原因。添加的测试我非常积极。但我的删除方法实际上甚至测试了什么吗?我想有些问题是JUnit在我的场景中为了帮助我做了什么,我是否设置了合理的测试?请感谢所有人和任何建议。注意:::我只有大约2个月的Java知识。
/**
* Test of add method, of class ListOfFraction.
*/
@Test
public void testAdd()
{
System.out.println("add");
Fraction z = new Fraction(1, 2);
Fraction x = new Fraction(2, 3);
Fraction y = new Fraction("4/3");
ListOfFraction instance = new ListOfFraction();
instance.add(z);
instance.add(x);
instance.add(y);
// review the generated test code and remove the default call to fail.
boolean expResult = true; // we expect the result of delete to
// be true since we just added it.
boolean result = instance.delete(z);// Call actual delete
boolean result2 = instance.delete(x);
boolean result3 = instance.delete(y);
assertEquals(expResult, result); // Test the results.
assertEquals(expResult, result2);
assertEquals(expResult, result3);
}
/**
* Test of delete method, of class ListOfFraction.
*/
@Test
public void testDelete()
{
System.out.println("delete");
Fraction z = new Fraction(3, 2);
Fraction x = new Fraction(3, 3);
Fraction y = new Fraction("7/3");
ListOfFraction instance = new ListOfFraction();
boolean expResult = false;
boolean result = instance.delete(z);
boolean result2 = instance.delete(x);
boolean result3 = instance.delete(y);
assertEquals(expResult, result);
assertEquals(expResult, result2);
assertEquals(expResult, result3);
// TODO review the generated test code and remove the default
// call to fail.
}
}
答案 0 :(得分:1)
您的删除测试正在尝试删除您从未添加到ListOfFractions的条目。请参阅添加测试,该测试似乎正确添加项目然后将其删除。这不错,可以考虑一个测试 - 删除那里的项目。但是您可能还需要测试添加3个条目然后将其删除的情况。
使用JUnit4,创建一个具有一些公共代码的基类要容易得多,这些代码可以从测试类扩展而来。或者,您可以在此测试类中创建一些“辅助”方法,例如createBaseListOfFractions()等方法 - 这可以构建add和delete方法中使用的3个分数的列表。通过这种方式,您可以重用代码,并且实际的测试方法变得更小,调用辅助方法,然后执行特定方法,然后最终断言您的条件。
答案 1 :(得分:1)
您的测试混乱:您的添加文本也在删除,然后测试它不存在,但如果添加和删除都被破坏(即什么都不做),您的测试仍会通过!
最好添加,然后确认已添加。在删除时,可以同时执行这两项操作,因为您正在单独测试添加部分。
另外,不要使用这样的变量。变化:
boolean expResult = true;
boolean result = instance.delete(z);
assertEquals(expResult, result);
简单地说:
assertTrue(instance.delete(z));
代码少,易于阅读,更易于调试。