gpt4 book ai didi

java - 从junit测试中的测试/资源获取文件名路径

转载 作者:行者123 更新时间:2023-11-28 21:30:47 36 4
gpt4 key购买 nike

我想为我的 CsvReader 适配器读取 Junit 测试。它以文件名作为构造函数中的参数。我在 src/test/resources 中放置了一个文件 test.txt 用于测试目的,但是我无法弄清楚如何从测试中获取该文件。当我只传递文件名时,我得到 FileNotFoundException。我已经阅读了有关 class.getClassLoader().getResourceAsStream(name) 的方法,但是我无法将 InputStream 而不是文件名传递给构造函数,因为我需要多次重新打开文件才能在读取文件后返回到文件开头所有的。不幸的是,第三方 CSVReader 不将 RandomAccessFile 作为参数,我也没有发明任何更好的解决方案。所以它总是有工作方法从 Junit 测试获取到 test/resources/file.txt 的路径?

最佳答案

在运行时,该文件不在测试/资源中。您的构建系统/IDE 会将它放在内部 一个 Jar 中,或者放在您的 classes/目录中的某个地方。无论哪种方式,它都只能通过类路径访问; getResourceAsStream() 将其抽象化,因此您应该使用它。

如果您真的需要一个文件名(即,如果这是您的类如何工作的一个不可避免的方面*),那么您应该考虑使用 JUnit 的 @TemporaryFolder rule ;让您的测试设置将资源文件的内容复制到一个临时文件中,然后将其名称传递给您的构造函数。


* 这听起来像是一个设计缺陷,您应该考虑重写您的类以使用抽象。

关于java - 从junit测试中的测试/资源获取文件名路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23181064/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com