gpt4 book ai didi

java - 为什么 google CodePro 会生成相同的 JUnit 测试?

转载 作者:搜寻专家 更新时间:2023-10-31 20:30:22 27 4
gpt4 key购买 nike

当 CodePro 自动为我的方法生成测试时,它通常会生成相同的测试:

/**
* Run the String getCategoryID() method test.
*
* @throws Exception
*
* @generatedBy CodePro at 17/11/11 11:44 AM
*/
@Test
public void testGetCategoryID_1()
throws Exception {
Category fixture = new Category("");

String result = fixture.getCategoryID();

// add additional test code here
// An unexpected exception was thrown in user code while executing this test:
// java.lang.NullPointerException
// at java.io.StringReader.<init>(StringReader.java:33)
// at xpath.XPathRunner.<init>(XPathRunner.java:23)
// at trademefacade.Category.retrieveCategoryID(Category.java:95)
// at trademefacade.Category.getCategoryID(Category.java:68)
assertNotNull(result);
}

/**
* Run the String getCategoryID() method test.
*
* @throws Exception
*
* @generatedBy CodePro at 17/11/11 11:44 AM
*/
@Test
public void testGetCategoryID_2()
throws Exception {
Category fixture = new Category("");

String result = fixture.getCategoryID();

// add additional test code here
// An unexpected exception was thrown in user code while executing this test:
// java.lang.NullPointerException
// at java.io.StringReader.<init>(StringReader.java:33)
// at xpath.XPathRunner.<init>(XPathRunner.java:23)
// at trademefacade.Category.retrieveCategoryID(Category.java:95)
// at trademefacade.Category.getCategoryID(Category.java:68)
assertNotNull(result);
}

这些是对以下方法的测试:

public String getCategoryID() throws IOException,
NoCategoryMatchException {
categoryID = retrieveCategoryID();
if (categoryID.equals("")) {
throw new NoCategoryMatchException();
}
return categoryID;
}

我是不是用错了CodePro?我认为多个测试是提示我实现两个测试,但每当我自定义测试时,它们只会在 CodePro 重新生成测试时被重写。

最佳答案

我不太了解CodePro,但是看着JUnit Test Case Generation - Execution :

In order to determine the expected result of a target method, the code generator executes that method. The CodePro > JUnit > Test Execution preferences controls the code generator's response when the execution of a method throws an exception.

看起来您的代码正在由 CodePro 执行,但它抛出 NullPointerException,可能是因为设置没有正确完成?

CodePro 正在生成两个测试用例,因为代码有两条路径通过它,但 NullPointerException 意味着没有生成不同的测试代码。

我不完全理解所涉及的所有机制,但尝试将 retrieveCategoryId() 替换为仅返回“”并重新生成测试的方法。如果这有效,那就是问题所在。我不知道解决方案是什么。在 google codepro 的论坛上试用。

关于java - 为什么 google CodePro 会生成相同的 JUnit 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8159946/

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