【问题标题】:junit (eclipse) test neither fails nor passesjunit(eclipse)测试既不失败也不通过
【发布时间】:2015-03-25 16:49:27
【问题描述】:

我正在 Eclipse 中运行测试。 jar 和测试已正确编写。我已经确定它不是版本控制错误等。在我运行测试后,控制台(在 Eclipse 中)显示程序运行成功并终止,但在 junit 测试透视图中,在 Eclipse 中,红色按钮变为禁用但“重新运行测试”仍保持启用状态。没有失败痕迹,我也没有看到指示测试成功的绿色条。此处的任何指针都会有所帮助。

import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

public class ExampleTest{

@Before
public void setUp() throws Exception {
}

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@After
public void tearDown() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Test
public void validityTest() {
    String userInput = ValidatorCode.validateStr("validStr");
    assertEquals("theValidValue", userInput);
}
}

【问题讨论】:

  • 请展示一个简短但完整的示例来说明问题。您可能认为测试编写正确 - 这并不意味着它一定是......
  • 感谢您阅读 Jon Skeet。这是代码(我已经用代码编辑了帖子)
  • 我在课堂上没有看到 RunWith 注释 - 这是故意的吗?
  • 我之前没用过Runwith注解。我怀疑 eclipse 和库设置,但这些都不是问题。我快速阅读了 Runwith 注释,但请赐教,我如何在这个测试中添加 Runwith?再次提前感谢您的宝贵时间。
  • 我一直在 Eclipse 中使用@RunWith(JUnit4.class),但很可能这实际上并不是必需的。 (现在将对其进行测试。)如果您将测试更改为不实际测试 jar 文件中的任何内容 - 例如改成String userInput = "not a valid value";可以测试吗?

标签: java eclipse junit


【解决方案1】:

希望我没有误会你。据我了解,您只有一个测试,这是成功的。现在,如果您没有启用切换功能(选中图片中带圆圈的按钮),那么您将看不到成功的测试。让你的测试失败,然后再次检查,失败的测试应该总是显示出来。

【讨论】:

  • 是的,我确实确定了这一点。无论如何,谢谢。
【解决方案2】:

找到一段代码,其中System.exit(0) 被用于终止执行。显然,Junit 不喜欢那样。我用return 语句替换了System.exit(0),它就像一个魅力。 解决了这个问题后,我进一步的问题是,Junit 不喜欢 System.exit(0) 背后的逻辑是什么? System.exit(0) 表示进程的干净退出或顺利执行(没有任何警告),好吧! Junit不应该那样吗?

【讨论】:

  • 据我了解,这将立即退出当前进程,这可能是 junit 测试运行器。并不是 JUnit 不喜欢它,它从来没有机会谈论它。
猜你喜欢
  • 2017-12-09
  • 2011-03-22
  • 2010-10-12
  • 1970-01-01
  • 2012-08-05
  • 2011-05-26
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多