0

我想寫JUnit測試此功能測試功能(ParseToXML,的PostMethod)使用JUnit

public static int creerFichierXml(TextField titre_projet,TextField description1,TextField svn,TextField planning1,TextField planning2,TextField goals,TextField mail){ 
//Créer le fichier XML et l'envoyer au serveur 

    int returnCode = 0; 
    ParseToXML j=new ParseToXML(); 
    try { 
j.main(description1, svn, planning1, planning2, goals,mail); 
    } catch (InterruptedException e1) { 
     e1.printStackTrace(); 
    } 

HttpClient client = new HttpClient(); 
PostMethod postMethod = new PostMethod("http://localhost:8080/createItem?name="+titre_projet.toString()); 
postMethod.setRequestHeader("Content-type", "application/xml; charset=ISO-8859-1"); 
try { 
    postMethod.setRequestBody(new FileInputStream(new File("C:/integrationContinue/src/main/resources/config.xml"))); 
    returnCode = client.executeMethod(postMethod); 
    System.out.println("*********************************************"+returnCode); 


} catch (FileNotFoundException e) { 
    e.printStackTrace(); 
} catch (HttpException e) { 
    e.printStackTrace(); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
return returnCode; 
} 

這段代碼是用來創建一個XML文件,那麼它用的PostMethod

的Junit必須向服務器測試http連接,解析爲Xml並調用主函數

回答

0

如果您正在調用ParseToXML,HttpClient,PostMethod因爲您正在測試的代碼之外測試代碼,所以您沒有進行單元測試。要真正進行單元測試,您需要提供工廠類別ParseToXml,HttpClientPostMethod。然後你會注入模擬工廠,這些模擬工廠會爲這些類中的每一個返回模擬。然後你會測試這些模擬是否被正確調用。

如果您正在測試此代碼實際上是否向服務器X發送了HTTP Post方法,那麼您正在進行集成測試而不是單元測試。