2015-04-28 47 views
0

我已經使用黃瓜和junit轉輪在eclipse Kepler中創建了一個項目。 此外,我正在使用log4j.properties文件放置在我的項目中的config文件夾下。 Log4j屬性配置在Base類中定義如下。黃瓜功能無法檢測到日食中的相對路徑

PropertyConfigurator.configure("config/log4j.properties"); 

Profile.feature

Feature: This is a profile feature 
    @Testing 
    Scenario: this is the first scenario for Profile page 
    Given I open Naukri app 
    When I tap on "Profile Image" 
    Then The toolbar shows "User Profile" 

RunnerTest.java

@RunWith(Cucumber.class) 
@CucumberOptions(
     format = { "pretty", "html:target/html/", "json:target/json/output.json"}, 
     features = "src/test/features", 
     glue = "com.stepsdefination", 
     tags = {"@Testing"} 
     ) 
public class RunnerTest { 

} 

現在,當我在Eclipse中運行Profile.feature文件時顯示 -

java.io.FileNotFoundException:配置\ log4j.properties(系統 找不到指定的路徑)

但是,當我直接運行RunnerTest.java文件,那麼它可以完美運行。

爲什麼我的功能文件沒有采用相對路徑。當我硬編碼文件位置,如'D:\ Project \ Workspace \ DemoCucumer \ config \ log4j.properties'時,它工作。 當位置發生變化時,不可能每次更改文件路徑。

項目結構:

DemoCucumber 
>src\main\java 
>src\test\java 
>config > log4j.properties 

我已經安裝並下載在Eclipse中涉及到的所有黃瓜插件。

+0

您的相對路徑是什麼?你怎麼知道的? – SiKing

+0

相對我的意思是我已經保存在項目本身中,而不是像D:\ Project \ Workspace \ DemoCucumer \ config \ log4j.properties這樣的完整路徑。在問題描述 –

+0

中添加了項目結構並在您的'PropertyConfigurator.configure(...)'語句中,您是如何指出這一點的? – SiKing

回答

1

您需要定義配置文件作爲一種資源:

如果你的項目是Maven項目,你需要有一個名爲src/main/resources目錄,並在那裏將整個「config」目錄。

在Eclipse中,右鍵單擊resources目錄,然後選擇「構建路徑」>「用作源文件夾」。文件夾圖標上的裝飾器將改變!

在你的代碼,來檢索文件,你需要的東西,如:

URL res = getClass().getResource("/config/log4j.properties"); 
Assert.assertNotNull("Your resources are not configured correctly!", res); 
File f = new File(res.getFile()); 
PropertyConfigurator.configure(f.getCanonicalPath()); 
+0

我在File f = new File(res.getFile())處得到nullpointerexception; –

+0

您沒有將config目錄正確添加爲源文件夾。 – SiKing

+0

是的,我確實添加了config文件夾,並且圖標外觀已更改爲源文件夾。 –