如何为存储库 (java) 中的文件指定路径,以便我的自动化测试不会失败

Posted

技术标签:

【中文标题】如何为存储库 (java) 中的文件指定路径,以便我的自动化测试不会失败【英文标题】:how to specify a path for a file in repository ( java ) , so that my automation test won't fail 【发布时间】:2021-12-22 18:32:11 【问题描述】:

我正在测试一个放心的API,编程语言是JAVA,我有一点问题,问题是,我必须使用放心发送图像,并且它在本地发送成功,但是当我推送时它到 git ,指定路径有问题,我所有的测试都在 TeamCity 上运行,我得到了我的黄瓜报告,报告如下

java.io.FileNotFoundException: C:\Users\nameOfUser\Downloads\38250987.jpeg(系统找不到指定的路径)

我希望我已经提供了足够的描述性,如果您有任何疑问,请提出您的问题,希望您的帮助和合作,在此先感谢!

代码如下

public static Response SendAnImage(String prodID,Cookies cookies)  

     File file = new File("C:\\Users\\userName\\Downloads\\38250987.jpeg");
        System.out.println("is file found ---->  "+file.exists());

        Response response = given()
                .multiPart("file", file, "image/jpeg")
                .when()
                .cookies(cookies)
                .post("/api/product/"+prodID+"/file/false");


        return response;


    

【问题讨论】:

请在这里分享您的代码,我们应该使用正斜杠作为路径参考。 感谢您的回复,代码在上面共享@ Jayanth Bala 位置应使用正斜杠 => C:/Users/userName/Downloads/38250987.jpeg。请尝试我也有其他解决方案 请问你可以分享你的另一个解决方案吗?那是什么? 将图像复制到主程序文件夹并使用此语法。这将为您提供跨操作系统的当前工作目录路径。 System.getProperty("user.dir"); 【参考方案1】:

您不能在测试中引用本地文件。您需要将图片文件包含到您的 Git 存储库中,将它们作为资源加载到测试中,然后使用 REST-assured 中接受字节数组而不是文件的方法:

multiPart(String controlName, String fileName, byte[] bytes)

【讨论】:

感谢您的回复,如果您可以通过一些示例给我视觉解释,我将不胜感激,我已经尝试过您告诉我的,对我不起作用,我的意思是我肯定缺少一些东西。【参考方案2】:

您可以将文件放在src/test/resources 文件夹中,然后像这样创建一个新文件:

 File file = new File("src/test/resources/38250987.jpeg");

【讨论】:

以上是关于如何为存储库 (java) 中的文件指定路径,以便我的自动化测试不会失败的主要内容,如果未能解决你的问题,请参考以下文章

如何为具有特定路径(React Native)的现有项目创建私有 Git 存储库?

如何为非Spring Boot的Java应用程序指定外部配置文件

如何为 celery 任务日志指定文件路径?

如何为javac设置PATH变量,以便我可以手动编译我的.java工作?

如何为 GitHub 中的孤立提交分配标签?

如何为 github 和 npm 指定不同的自述文件