Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JUnit, данные из XML, Data Driven Testing / 6 сообщений из 6, страница 1 из 1
04.12.2013, 18:09:26
    #38489368
serg130191
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JUnit, данные из XML, Data Driven Testing
Пытаюсь организовать data-driven test (DDT) на JUnit c взятием тестовых данных из XML-файла. Всё это дело строю с помощью XMLParameterizedRunner.class ( https://code.google.com/p/junitext/w...unnerReference), но не работает. Подскажите в чем проблема и как её исправить, или какой-либо другой способ организовать DDT или "параметризированный" тест с данными из XML.

Тестиреумый класс:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
package calc;
 
public class Calc {
 
    public int Sum(int x, int y){
        return (x+y);
    }   
}



Тест:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
package junit;
 
import static org.junit.Assert.assertEquals;
 
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junitext.XMLParameters;
import org.junitext.runners.XMLParameterizedRunner;
 
 
@RunWith(XMLParameterizedRunner.class)
public class CalcTest{
            
      private int fInput;
      private int fExpected;
 
      @XMLParameters("input.xml")
      public CalcTest(int input, int expected) {
        fInput= input;
        fExpected= expected;
      }
    
        @Test
        public void testSum() {
            assertEquals(fInput,fExpected);
        }
    
}



XML:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8" ?>
<tests>
  <test>
     <value type="java.lang.Ingeter" >0</value>
     <value type="java.lang.Ingeter" >0</value>
  </test>
  <test>
     <value type="java.lang.Ingeter" >1</value>
     <value type="java.lang.Ingeter" >1</value>
  </test>
  <test>
     <value type="java.lang.Ingeter" >2</value>
     <value type="java.lang.Ingeter" >1</value>
  </test>
</tests>



При запуске выдаёт:

java.lang.NullPointerException
at java.io.FileInputStream.<init>(Unknown Source)
at org.junitext.runners.parameters.factory.DigesterParameterFac tory.createParameters(Unknown Source)
at org.junitext.runners.XMLParameterizedRunner$RunAllXMLParamet erMethods.getParametersList(Unknown Source)
at org.junitext.runners.XMLParameterizedRunner$RunAllXMLParamet erMethods.<init>(Unknown Source)
at org.junitext.runners.XMLParameterizedRunner.<init>(Unknown Source)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Nativ e Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknow n Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Un known Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.junit.internal.requests.ClassRequest.buildRunner(ClassRe quest.java:33)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequ est.java:28)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.< init>(JUnit4TestReference.java:33)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassRefere nce.<init>(JUnit4TestClassReference.java:25)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.crea teTest(JUnit4TestLoader.java:48)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.load Tests(JUnit4TestLoader.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( RemoteTestRunner.java:197)

Подключённые jar:
junit-4.3.jar
hamcrest-core-1.3.jar
junitext-0.2.4.jar
commons-digester-1.7.jar
...
Рейтинг: 0 / 0
04.12.2013, 20:55:13
    #38489572
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JUnit, данные из XML, Data Driven Testing
serg130191,

Вот подобный пример http://junitext.sourceforge.net/tutorial.html

похоже Вы неправильно указываете местонахождение файла
@XMLParameters("input.xml")

если "input.xml" файл Вы положили под

resources директорией то возможно надо написать @XMLParameters("/input.xml") т.е. воткнуть "/"
...
Рейтинг: 0 / 0
05.12.2013, 00:23:03
    #38489672
serg130191
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JUnit, данные из XML, Data Driven Testing
Спасибо. Данный пример я видел - и он так же у меня не работает, выдаёт те же ошибки, что и приведённый выше. Так же думаю, что ошибка с расположением XML, но он у меня лежит уже во всех папках проекта, где можно и где нельзя.
...
Рейтинг: 0 / 0
05.12.2013, 01:09:56
    #38489697
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JUnit, данные из XML, Data Driven Testing
В данном примере нет ничего такого что нельзя было-бы сделать простыми
утверждениями.
...
Рейтинг: 0 / 0
05.12.2013, 01:25:22
    #38489701
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JUnit, данные из XML, Data Driven Testing
serg130191Спасибо. Данный пример я видел - и он так же у меня не работает, выдаёт те же ошибки, что и приведённый выше. Так же думаю, что ошибка с расположением XML, но он у меня лежит уже во всех папках проекта, где можно и где нельзя.

Тогда тупо впарь абсолютный путь типо C:/opt/xml/input.xml
...
Рейтинг: 0 / 0
18.12.2013, 05:21:10
    #38504498
serg130191
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JUnit, данные из XML, Data Driven Testing
Спасибо за ваши ответы, т.к. отвечали только на данном форуме. Проблему решил. Выкладываю решение может кому и пригодится)

src
|__junit
____|__CalcTest.java
____|__input.xml

CalcTest.java:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
package junit;

import static org.junit.Assert.assertEquals;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junitext.XMLParameters;
import org.junitext.runners.XMLParameterizedRunner;


@RunWith(XMLParameterizedRunner.class)
public class CalcTest{
		  
	
	  private int fInput;
	  private int fExpected;

	  @XMLParameters("/junit/input.xml")
	  public CalcTest(String input, String expected) {
	    fInput= Integer.parseInt(input);
	    fExpected= Integer.parseInt(expected);
	  }
	
		@Test
		public void testSum() {
			assertEquals(fInput,fExpected);
		}
	
}



input.xml:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8" ?>
<tests>
  <test>
     <string id="input" value="10" />
     <string id="expected" value="10" />
  </test>
    <test>
     <string id="input" value="10" />
     <string id="expected" value="1" />
  </test>
    <test>
     <string id="input" value="1" />
     <string id="expected" value="1" />
  </test>
</tests>



JAR-ы:
commons-beanutils-1.7.0.jar
commons-digester-1.7.jar
commons.logging-1.1.1.jar
junit-4.3.jar
junitext-0.2.4.jar
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JUnit, данные из XML, Data Driven Testing / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]