gpt4 book ai didi

java - TestNG ExpectedExceptions 抛出 TestException

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

我正在尝试测试以下类(class):

package com.myclass;
public class MyClass {
private Map<String, String> dataMap = new HashMap<>();

public void extractInfoFromLine(String line) throws InvalidInputException {
String[] words = line.split(" ");
if (dataMap.containsKey(words[0])) {
throw new InvalidInputException();
}
dataMap.put(words[0], words[2]);
}
public void confirmInfoPresent(String name) {
// Do something
}
}

使用此 TestNG 类:

package com.myclass;
public class MyClassTest {
private MyClass myClass;

@DataProvider(name = "invalid-data-provider")
public Object[][] invalidDataProvider() {
return new Object[][] {
{ "A is B", "A"},
{ "A is D", "A"},
};
}

@BeforeTest()
public void setup() {
myClass = new MyClass();
}
@Test(dataProvider = "invalid-data-provider", expectedExceptions = InvalidInputException.class)
public void testExceptionalExtractValueForKey(String line, String name) throws InvalidInputException {
myClass.extractInfoFromLine(line);
myClass.confirmInfoPresent(name);
}
}

我为此定义了以下自定义异常:

package com.myclass;
public class InvalidInputException extends Exception {
public InvalidInputException() {
super();
}

public InvalidInputException(String message) {
super(message);
}

public InvalidInputException(String message, Throwable cause) {
super(message, cause);
}

public InvalidInputException(Throwable cause) {
super(cause);
}
}

但是,当我运行此测试用例时,出现以下错误:

Expected exception com.myclass.InvalidInputException but got org.testng.TestException: 
Method MyClassTest.testExceptionalExtractValueForKey(java.lang.String, java.lang.String)[pri:0, instance:com.myclass.MyClassTest@3930015a] should have thrown an exception of class com.myclass.InvalidInputException

我尝试用标准异常替换自定义异常,但仍然得到相同的结果。

有人可以帮我解决这个问题吗?

最佳答案

@KarthickS,三个不同的人已经给了你相同的答案。我不明白还应该解释什么以及如何解释。在第一次@Test迭代时,dataMap为空(dataMap.containsKey(words[0]) == false),因此,“if”语句体内的代码将不会被执行;这意味着您的异常不会被抛出。TestNg 会威胁测试失败,因为 @Test 注释中设置了“expectedExceptions”属性。第二次测试迭代将通过,因为 dataMap 不再为空(dataMap.put(words[0], Words[2]) - 您已在第一次运行时添加了数据)。TestNg 文档再次谈到“expectedExceptions”:测试方法预期抛出的异常列表。如果没有抛出异常或抛出与此列表中的异常不同的异常,则此测试将被标记为失败。

关于java - TestNG ExpectedExceptions 抛出 TestException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29507698/

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