如何在JUnit中测试测试Delete(),如何实际测试J-Unit

时间:2014-02-20 01:55:56

标签: java testing

好的,所以我第一次使用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.
   }
}

2 个答案:

答案 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));

代码少,易于阅读,更易于调试。