【问题标题】:JUnit - assertFalse does not except == Operator?JUnit - assertFalse 不除了 == 运算符?
【发布时间】:2012-09-27 08:43:10
【问题描述】:

我目前正在为我的程序编写 junit 测试。

我的一个测试更新了现有产品。代码如下:

@Test
public void testUpdate(){
    Produkt p = new Produkt(1, "apple", "food", true, 2.00, false, true);
    assertFalse(handler.updateProdukt(p)==0);;  
} 

但 eclispe 总是说:

操作符 == 未定义参数类型 void, int

如果我写 null 没有任何改变...

是否有可能测试 updatedProdukt 是否为空?

非常感谢你的回答!!!

【问题讨论】:

    标签: java eclipse unit-testing testing junit


    【解决方案1】:

    您的方法是void。它不返回任何内容,因此返回值不能用于赋值或表达式中。

    与 jUnit 或 Eclipse 无关。

    也许你想要这样的东西:

    handler.updateProdukt(p);
    assertEquals("has been updated", theNewExpectedValue,  p.getSomeValue());  
    

    【讨论】:

      【解决方案2】:

      不止如此

      handler.updateProdukt(p)
      

      不返回任何值,需要将签名改为

      int handler.updateProdukt(p)
      

      【讨论】:

      • @maximus 您正在测试该方法是否返回 0,但您已声明您的方法返回 void。你期待什么?
      【解决方案3】:

      这是因为您的 updateProdukt 方法返回 void。更改它以返回一些东西,例如booleanint,然后您可以在 assert 中使用它。

      问题是:updateProdukt 在做什么,你想测试什么?如果它正在更新指定的产品,那么您应该返回一个boolean(true 或 false)来指示指定的产品是否更新成功。或者,返回已更新的 Product,如果没有更新产品,则返回 null。

      【讨论】:

      • 所以无法测试 updateProdukt 是否为空?
      【解决方案4】:

      您的updateProdukt() 返回什么?退货不是无效吗?

      您需要从 updateProdukt() 返回一些内容才能使用 == 运算符。

      【讨论】:

      • 那么有没有不同的方法可以通过单元测试来测试一个void Method?
      • 你想测试更新是否真的更新了东西(通过检查产品)
      • 除非您定义您要测试的内容,否则很难说。如果您正在验证产品更新是否成功,则返回一个布尔值以指示它成功,因此您可以简单地执行assertTrue(handler.updateProdukt(p))
      【解决方案5】:

      如果返回 int 或 Strings 或 Long 值,请尝试以下代码。

      assertFalse(handler.updateProdukt(p).equals(0));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-24
        • 2018-02-20
        • 1970-01-01
        • 1970-01-01
        • 2016-07-09
        • 1970-01-01
        • 2013-07-05
        • 1970-01-01
        相关资源
        最近更新 更多