我有JUnit測試需要在各種不同的分段環境中運行。每個環境都具有不同的登錄憑證或特定於該環境的其他方面。我的計劃是將一個環境變量傳遞給VM,以指示要使用的環境。然後使用該var從屬性文件讀取。JUnit是否支持測試的屬性文件?
JUnit是否具有讀取.properties文件的能力?
我有JUnit測試需要在各種不同的分段環境中運行。每個環境都具有不同的登錄憑證或特定於該環境的其他方面。我的計劃是將一個環境變量傳遞給VM,以指示要使用的環境。然後使用該var從屬性文件讀取。JUnit是否支持測試的屬性文件?
JUnit是否具有讀取.properties文件的能力?
java內置了讀取.properties文件的功能,JUnit內置了執行測試套件之前運行設置代碼的功能。
java的閱讀性能:
Properties p = new Properties();
p.load(new FileReader(new File("config.properties")));
把那些2在一起,你應該有你需要的東西。
難道你不能只讀你的設置方法中的屬性文件?
//
// 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")));
通常最好使用單元測試屬性的類路徑相關文件,因此它們可以運行而不用擔心文件路徑。路徑在您的開發盒或構建服務器上或在任何地方可能不同。這也將工作從螞蟻,maven,日食沒有變化。
private Properties props = new Properties();
InputStream is = ClassLoader.getSystemResourceAsStream("unittest.properties");
try {
props.load(is);
}
catch (IOException e) {
// Handle exception here
}
將「unittest.properties」文件放在類路徑的根目錄下。
這是很好的信息。您可以考慮將此作爲對已被接受的答案的評論;那麼在結果中出現這種情況的人會更有可能被讀到。 – chb 2012-08-10 04:20:35
可能需要使用ClassLoader:http://stackoverflow.com/a/9983486/640378 – mauryat 2012-12-06 18:06:50