当前位置: 首页 > 知识库问答 >
问题:

JUnit测试用例失败

曹凯泽
2023-03-14

我有一个简单的测试用例:

public class FileManagerTest {
  String dirPath = “/myDir/”
  @Before
  public void setUp() {
     mFileManager = MyFileManager.getInstance();
  }

  @Test
  private void testPersistFiles() {
      System.out.println(“testPersistFiles()…”);

      //it deletes old files & persists new files to /myDir/ directory
      boolean successful =mFileManager.persistFiles();

      Assert.assertTrue(successful);
  }

  @Test
  public void testGetFiles() {
     System.out.println(“testGetFiles()…”);

     mFileManager.persistFiles();
     //I double checked, the persistFiles() works, the files are persisted.

     List<File> files = mFileManager.getFilesAtPath(dirPath);
     Assert.assertNotNull(files); //Failure here!!!!
  }

  @Test
  public void testGetFilesMap() {
     System.out.println(“testGetFilesMap()…”);

     mFileManager.persistFiles();

     Map<String, File> filesMap = mFileManager.getFilesMapAtPath(dirPath);
     Assert.assertNotNull(files);
  }
}

FileManager中的函数删除 /myDir下的所有文件,然后再次保留文件。

如上所述,我有一个系统。出来在每个测试函数中println(…)。运行时,我可以按以下顺序查看所有打印:

testGetFilesMap()…
testGetFiles()…
testPersistFiles()…

但是,测试在testGetFiles()失败。有两件事我不明白:

>

  • 我不明白,它在testGetFiles()中失败了,为什么我仍然可以看到打印的testPeristFiles(),听起来就像是失败了,它没有停止运行,而是继续运行下一个测试测试文件()?JUnit测试用例中的场景背后发生了什么??

    我不明白的另一件事是为什么testGetFiles()失败了?我可以看到日志,持久文件()已持久化文件。为什么在那之后它就空了?

  • 共有3个答案

    梁丘烨
    2023-03-14

    对于每个测试,JUnit都会创建一个单独的类实例并运行它。由于您似乎有3个测试,JUnit将为您的类创建3个实例,在每个实例上执行@前初始化状态,然后运行它们。它们运行的顺序通常是编写测试的顺序,但这并不能保证。

    现在,关于print语句,您可以看到它是测试中的第一条语句,因此它将被执行。然后是经理。持久化文件();被执行。由于某种原因,它返回false,因此测试失败。

    至于为什么它返回false,您可以运行本地调试器,在该方法的开始处放一个断点,单步执行并查看。

    缪晋
    2023-03-14
    mFileManager.getFilesAtPath(dirPath);
    

    你没有在正确的地方搜索文件

    String dirPath = “/myDir/”
    

    你确定这条路可以吗?在目录名前加个斜杠?

    岳彬炳
    2023-03-14

    我不明白,testGetFiles()失败了,为什么我仍然可以看到打印testPersistFiles(),即使它失败了,我也不明白

    这就是单元测试的工作原理。每个测试都应该是独立的,并且只使用其数据集工作。单元测试框架运行每个测试,以便您可以看到系统的哪些部分工作,哪些不工作,它们不会在第一次失败时停止。

     类似资料:
    • 我的JUnit测试用例失败了。行出现错误 mockito.When(BlogEntryService.Find(1L)).ThenReturn(entry); 故障跟踪是 java.lang.NullPointerException位于com.sample.controller.BlogentryControllerTest.GetExistingBlogEntry(BlogentryContro

    • 我是新的火花与Java编程。我有一个从Oracle数据库读取数据的方法。现在我需要帮助编写测试用例使用JUnit框架为下面的代码。 数据集df=spark。read()。格式(“jdbc”)。jdbc(jdbcUrl、dbTable1、connectionProperties);

    • 问题内容: 我通过参考以下 链接创建了一个示例struts 2项目和junit测试用例。 http://self-learning-java-tutorial.blogspot.com.au/2015/04/struts2-junit- integration.html 但是,在执行测试用例时,出现以下错误, Eclipse JUNIT stacktrace中的错误 问题答案: 在构建路径中添加c

    • 我正在为我的RESTAPIendpoint编写JUnit,我已经为它创建了一个简单的hello world控制器类和JUnit,但是我在执行JUnit测试用例时遇到了以下异常。如果有人能帮我解决这个问题,那将非常有帮助。我在Spring4.3版本中使用JDK6 注意:我没有使用spring上下文XML—我使用的是Java注释 你好ontroller.java HelloControlllerTes

    • 我想学习如何编写JUnit测试,但我完全失败了。 这是我的测试: 问题是这个简单的断言已经失败了。返回的列表是空的。我知道,我对这一切都不熟悉,但是从我的角度来看,失败是如此出乎意料,以至于我没有办法解决这个问题。 以下是全部代码(不太多): 要测试的功能就是这个,我知道它是有效的: 实际上,我只是想学习如何编写这样的测试,但是几天来我一直没有写出来。有相当多的例子和解释,但是不管我做什么尝试,我