gpt4 book ai didi

java - 测试用例失败时使用 EasyTest 时出现 ParameterizedAssertionError

转载 作者:太空宇宙 更新时间:2023-11-04 14:20:36 25 4
gpt4 key购买 nike

我想尝试 EasyTest 从 CSV 获取输入参数,并在此处发布的博客中找到了以下写得很好的示例:

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

如果我按照示例操作,它会运行得很漂亮,为我提供一个漂亮的 PDF 输出,正如广告中所宣传的那样。

但是,如果我导致测试用例失败,通过将最后一行输入从“,9,-12”更改为“,9,-13”,我将不再获得 PDF 输出,并且会出现 2 次失败而不是 1 次。

第一次失败是测试用例失败的正确断言。第二次失败是以下异常:

<testcase name="classMethod" classname="TransformCelciusTest" time="0.0">
<failure message="org.junit.experimental.theories.internal.ParameterizedAssertionError: testToCelsiusConverter(TestInfo [testClass=org.junit.runners.model.TestClass@90bb3e6, dataLoader=org.easetech.easytest.loader.CSVDataLoader@5f4fc5ad, filePaths=[data/temperatureConversionData.csv], methodName=testToCelsiusConverter])" type="org.junit.experimental.theories.internal.ParameterizedAssertionError">org.junit.experimental.theories.internal.ParameterizedAssertionError: testToCelsiusConverter(TestInfo [testClass=org.junit.runners.model.TestClass@90bb3e6, dataLoader=org.easetech.easytest.loader.CSVDataLoader@5f4fc5ad, 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?

最佳答案

我使用 EasyTest Core 1.3.1 库测试了该场景,确实这是 EasyTest 1.3.1 中的一个问题(实际上是一个错误)。具体来说,CSVDataLoader 中存在 NullPointerException,因为它需要测试持续时间值,但由于测试失败而不存在。我必须看看这个问题的最佳解决方案是什么。我会随时向您通报解决方案。同时,您可以尝试 Excel 和 XML 数据加载器。或者,如果您想要快速解决方案,您可以复制粘贴 CSVDataLoader 并覆盖 CSVDataLoader 的第 364 行,以便它检查 DURATIOn 是否存在,然后才对其调用 toString。然后你可以在@DataLoader注解中使用这个Loader作为自定义加载器。

谢谢,阿努吉·库马尔

关于java - 测试用例失败时使用 EasyTest 时出现 ParameterizedAssertionError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27233070/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com