2014-12-01 2 views
1

Я хотел попробовать Easytest, чтобы получить входные параметры из CSV и обнаружил следующее, красиво написано, например, в блоге размещены здесь:ParameterizedAssertionError с помощью Easytest когда тест терпит неудачу

http://gpcmol.blogspot.com/2013/06/easytest-unit-testing-with-externalized.html

Если я следовать Например, он работает красиво, давая мне хороший PDF-выход, как рекламируется.

Однако, если я вызываю ошибку тестового случая, изменив последнюю строку ввода от «, 9, -12» до «, 9, -13», я больше не получаю PDF-выход и получаю 2 отказа, а не один ,

Первый сбой - это правильное утверждение о том, что тестовый пример не срабатывает. Вторая неудача следующее исключение:

<testcase name="classMethod" classname="TransformCelciusTest" time="0.0"> 
    <failure message="org.junit.experimental.theories.internal.ParameterizedAssertionError: testToCelsiusConverter(TestInfo [[email protected], [email protected], filePaths=[data/temperatureConversionData.csv], methodName=testToCelsiusConverter])" type="org.junit.experimental.theories.internal.ParameterizedAssertionError">org.junit.experimental.theories.internal.ParameterizedAssertionError: testToCelsiusConverter(TestInfo [[email protected], [email protected], filePaths=[data/temperatureConversionData.csv], methodName=testToCelsiusConverter]) 
    at org.easetech.easytest.util.RunAftersWithOutputData.writeData(RunAftersWithOutputData.java:157) 
    at org.easetech.easytest.util.RunAftersWithOutputData.evaluate(RunAftersWithOutputData.java:133) 
    at org.junit.runners.ParentRunner.run(ParentRunner.java:300) 
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.runTestClass(JUnitTestClassExecuter.java:86) 
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecuter.execute(JUnitTestClassExecuter.java:49) 
    at org.gradle.api.internal.tasks.testing.junit.JUnitTestClassProcessor.processTestClass(JUnitTestClassProcessor.java:69) 
    at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:48) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
    at org.gradle.messaging.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32) 
    at org.gradle.messaging.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93) 
    at com.sun.proxy.$Proxy2.processTestClass(Unknown Source) 
    at org.gradle.api.internal.tasks.testing.worker.TestWorker.processTestClass(TestWorker.java:105) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35) 
    at org.gradle.messaging.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24) 
    at org.gradle.messaging.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:355) 
    at org.gradle.internal.concurrent.DefaultExecutorFactory$StoppableExecutorImpl$1.run(DefaultExecutorFactory.java:64) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: java.lang.RuntimeException: java.lang.NullPointerException 
    at org.easetech.easytest.loader.CSVDataLoader.writeDataToCSV(CSVDataLoader.java:364) 
    at org.easetech.easytest.loader.CSVDataLoader.writeData(CSVDataLoader.java:180) 
    at org.easetech.easytest.util.RunAftersWithOutputData.writeData(RunAftersWithOutputData.java:154) 
    ... 27 more 
Caused by: java.lang.NullPointerException 
    at org.easetech.easytest.loader.CSVDataLoader.writeOutputData(CSVDataLoader.java:382) 
    at org.easetech.easytest.loader.CSVDataLoader.writeDataToCSV(CSVDataLoader.java:347) 
    ... 29 more 
</failure> 
    </testcase> 

Любой понять, как изменить пример так, чтобы он должным образом завершается без исключения ParameterizedAssertionError так, что отказ тест может быть надлежащим образом представлены в выводе (PDF)?

Я думаю, что это связано: JUnit @Theory : is there a way to throw meaningful exception?

+0

Примечание: Использование Easytest-ядро 1.3.1. Это ошибка в EasyTest? – user1325626

ответ

0

Я тестировал сценарий с Easytest ядра 1.3.1 библиотеки и на самом деле это вопрос (Infact ошибка) в Easytest 1.3.1. В частности, в CSVDataLoader существует исключение NullPointerException, потому что оно ожидает значения Duration продолжительности теста, но его нет из-за отказа теста. Я должен посмотреть, какое лучшее решение для этой проблемы. Я буду держать вас в курсе решения. В то же время вы можете попробовать загрузчик Excel и XML. Или, если вы хотите быстрое решение, вы можете скопировать вставку CSVDataLoader и переопределить строку 364 CSVDataLoader таким образом, чтобы она проверяет наличие DURATIOn и только затем вызывает на ней строку toString. Затем вы можете использовать этот загрузчик как пользовательский загрузчик в аннотации @DataLoader.

Спасибо, Anuj Kumar

+0

Благодарим вас за быстрый ответ. Действительно, использование Excel (temperatureConversionData.xls) сработало и является простым способом. – user1325626