2013-09-25 20 views
10

Tôi đang viết một số bài kiểm tra đơn vị. Tôi đang chạy các bài kiểm tra bằng cách gọi trực tiếp các lớp (thay vì gọi một chương trình khác). Vấn đề là một số các lớp này sử dụng dữ liệu được xác định bởi đường dẫn tương đối, vì vậy chúng yêu cầu chương trình được bắt đầu trong một thư mục cụ thể. Làm thế nào tôi có thể thay đổi điều này trong Java?Danh bạ làm việc của Java Change File

Ví dụ: thử nghiệm đơn vị của tôi bắt đầu ở C:/unittest và dữ liệu tôi cần là ở C:/OtherProject. Tôi không muốn thay đổi mã của dự án khác nếu có thể, là có một cái gì đó như thế này trong java:

File.setWorkingDir("C:/OtherProject"); 

Bằng cách đó khi một cái gì đó giống như

File file = new File("data/data.csv"); 

Sẽ đọc C:/OtherProject/data/data.csv thay vì C:/unittest/data/data.csv.

+0

Làm cách nào để nhận bản sao dữ liệu cho mục đích thử nghiệm trong thư mục thử nghiệm? – Fildor

+0

ASAIK, không có gì giống như có sẵn. –

+0

Đó là lý do tại sao mọi người sử dụng cơ sở dữ liệu để chia sẻ cùng một dữ liệu, quản lý cùng một dữ liệu. –

Trả lời

11

Cập nhật câu trả lời của tôi, vì VolkerSeibt đã chỉ ra rằng nó không chính xác. Nắm bắt tốt.

Điều này có thể thông qua System.setProperty. Bạn có thể thay đổi thư mục làm việc hiện tại bằng cách thay đổi thuộc tính "user.dir" hệ thống:

System.setProperty("user.dir", "/foo/bar"); 

Xem http://www.javacodex.com/Files/Set-The-Current-Working-Directory cho giải thích thêm.

+0

Tôi đã thực hiện khá nhiều vòng tìm kiếm, điều này có vẻ như vậy. Tôi đã giải quyết nó bằng cách chỉ có một lớp tĩnh 'FileUtil' mà tôi lưu trữ thư mục làm việc trong (và có accessors), và sau đó một hàm 'loadFile' mà về cơ bản chỉ cần thêm thư mục làm việc vào đường dẫn tệp đã truyền. – Andy

+1

Thats sai. Xem http://www.javacodex.com/Files/Set-The-Current-Working-Directory. Hoạt động ít nhất trên windows và linux. –

+0

@VolkerSeibt: Bắt tốt. Tôi đã cập nhật câu trả lời của mình. – Bucket

0

Tôi nghĩ thư mục làm việc được xác định bởi thư mục nơi jvm được khởi chạy (thư mục được sử dụng khi thực hiện java).

Các vấn đề liên quan