|  | Верификация теста при помощи XMLUnit
В предыдущем разделе мы создали тест Junit для вызова Web-сервиса и получения отклика. Теперь мы изменим этот тест Juniit, чтобы сохранить реальный отклик от Web-сервиса в файл, а затем сравнить его с ожидаемым откликом при помощи API XMLUnit.
- Добавьте в путь сборки проекта файл xmlunit1.0.jar;
- Измените тестовый метод JUnit, добавив к коду листинга 5 код, выделенный голубым шрифтом;
Листинг 5. Сравнение откликов
package com.ibm.ws.sample.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import junit.framework.TestCase;
import org.custommonkey.xmlunit.Diff;
import org.custommonkey.xmlunit.XMLAssert;
import org.custommonkey.xmlunit.XMLUnit;
public class SampleTest extends TestCase
{
public void test() throws FileNotFoundException, Exception
{
// URL Web-сервиса
final String wsURL = "http://localhost:9080/
SampleProject/services/Users";
// Запрос XML-пути
final String requestXMLPath = "C:/wssample/request.xml";
// Ожидаемый путь отклика
final String expectedXMLPath = "C:/wssample/expected_response.xml";
// Реальный путь отклика
final String actualXMLPath = "C:/wssample/actual_response.xml";
// Кодировка
final String encoding = "UTF-8";
// Вызов Web-сервиса
String webServiceResponse = SampleHttpClient.invokeWebService
(wsURL,requestXMLPath);
// Сохраняем отклик на диск
File responseFile = new File(actualXMLPath);
responseFile.createNewFile();
OutputStreamWriter oSW = new OutputStreamWriter
(new FileOutputStream(responseFile),encoding);
oSW.write(webServiceResponse);
oSW.flush();
oSW.close();
// Сравнение откликов
Reader expectedXMLReader = new InputStreamReader
(new FileInputStream(expectedXMLPath), encoding);
Reader actualXMLReader = new InputStreamReader
(new FileInputStream(actualXMLPath), encoding);
// Игнорируем пробелы при сравнении
XMLUnit.setIgnoreWhitespace(true);
// Diff-объект, содержащий различия, если таковые имеются
Diff xmlDiff = new Diff(expectedXMLReader, actualXMLReader);
// значение "false" игнорирует порядок пользователей в XML-файле
XMLAssert.assertXMLEqual(xmlDiff,false);
}
}
|
- Сохраните и скомпонуйте проект;
- Нажмите правой кнопкой мыши на SampleTest.java и выполните его с помощью JUnit;
- В консоли Junit мы видим текст зеленого цвета; это значит, что тест прошел успешно (см. рисунок 8);
Рисунок 8. Консоль JUnit
- Теперь измените порядок пользователей в ожидаемом отклике и снова запустите тест. Откройте ожидаемый отклик в формате XML в C:\wssample\expected_response.xml;
- Измените порядок пользователей в соответствии с листингом 6;
6. Новый порядок пользователей
Листинг
<?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:q0="http://sample.ws.ibm.com"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SOAP-ENV:Body>
<getUsersReturn>
<User>
<name>Mohan</name>
<address>
<street>Avenue Street</street>
<city>Bangalore</city>
<zip>456789</zip>
</address>
</User>
<User>
<name>Mansoor</name>
<address>
<street>Martin Street</street>
<city>Bangalore</city>
<zip>135791</zip>
</address>
</User>
<User>
<name>John</name>
<address>
<street>Park Street</street>
<city>Washington</city>
<zip>012345</zip>
</address>
</User>
</getUsersReturn>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
|
- Сохраните файл и снова выполните тест. Он снова должен завершиться успешно.
 |
|  |
|