2009-10-12 69 views
18

我有JUnit測試需要在各種不同的分段環境中運行。每個環境都具有不同的登錄憑證或特定於該環境的其他方面。我的計劃是將一個環境變量傳遞給VM,以指示要使用的環境。然後使用該var從屬性文件讀取。JUnit是否支持測試的屬性文件?

JUnit是否具有讀取.properties文件的能力?

回答

24

java內置了讀取.properties文件的功能,JUnit內置了執行測試套件之前運行設置代碼的功能。

java的閱讀性能:

Properties p = new Properties(); 
p.load(new FileReader(new File("config.properties"))); 

junit startup documentation

把那些2在一起,你應該有你需要的東西。

+2

可能需要使用ClassLoader:http://stackoverflow.com/a/9983486/640378 – mauryat 2012-12-06 18:06:50

1

難道你不能只讀你的設置方法中的屬性文件?

1
// 
// Load properties to control unit test behaviour. 
// Add code in setUp() method or any @Before method (JUnit4). 
// 
// Corrected previous example: - Properties.load() takes an InputStream type. 
// 
import java.io.File; 
import java.io.FileInputStream;   
import java.util.Properties; 

Properties p = new Properties(); 
p.load(new FileInputStream(new File("unittest.properties"))); 

// loading properties in XML format   
Properties pXML = new Properties(); 
pXML.loadFromXML(new FileInputStream(new File("unittest.xml"))); 
18

通常最好使用單元測試屬性的類路徑相關文件,因此它們可以運行而不用擔心文件路徑。路徑在您的開發盒或構建服務器上或在任何地方可能不同。這也將工作從螞蟻,maven,日食沒有變化。

private Properties props = new Properties(); 

InputStream is = ClassLoader.getSystemResourceAsStream("unittest.properties"); 
try { 
    props.load(is); 
} 
catch (IOException e) { 
// Handle exception here 
} 

將「unittest.properties」文件放在類路徑的根目錄下。

+2

這是很好的信息。您可以考慮將此作爲對已被接受的答案的評論;那麼在結果中出現這種情況的人會更有可能被讀到。 – chb 2012-08-10 04:20:35