gpt4 book ai didi

java - JUnit 测试 - 我做错了什么

转载 作者:行者123 更新时间:2023-12-01 16:34:17 24 4
gpt4 key购买 nike

我对 JUnit 测试非常陌生,我正在尝试测试以下非常简单的类

public interface IItemsService extends IService {

public final String NAME = "IItemsService";


/** Places items into the database
* @return
* @throws ItemNotStoredException
*/
public boolean storeItem(Items items) throws ItemNotStoredException;




/** Retrieves items from the database
*
* @param category
* @param amount
* @param color
* @param type
* @return
* @throws ItemNotFoundException
*/
public Items getItems (String category, float amount, String color, String type) throws ItemNotFoundException;

}

这就是我的测试内容,但我不断收到空指针,以及另一个关于它不适用于该参数的错误...显然我在做一些愚蠢的事情,但我没有看到它。有人能指出我正确的方向吗?

public class ItemsServiceTest extends TestCase {



/**
* @throws java.lang.Exception
*/

private Items items;

private IItemsService itemSrvc;

protected void setUp() throws Exception {
super.setUp();

items = new Items ("red", 15, "pens", "gel");

}

IItemsService itemsService;
@Test
public void testStore() throws ItemNotStoredException {
try {
Assert.assertTrue(itemSrvc.storeItem(items));
} catch (ItemNotStoredException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println ("Item not stored");
}
}

@Test
public void testGet() throws ItemNotStoredException {
try {
Assert.assertFalse(itemSrvc.getItems(getName(), 0, getName(), getName()));
} catch (ItemNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();

}
}

}

最佳答案

您没有创建被测试类的实例,您只是将其声明为接口(interface)。在每个测试中,您应该创建被测类的实例并测试它的方法的实现。另请注意,您的测试不应相互依赖。您不应该依赖它们按特定顺序运行;测试的任何设置都应该在测试设置方法中完成,而不是由另一个测试完成。

通常,您希望在测试中使用 AAA(排列、执行、断言)模式。 setUp(排列)和tearDown(断言)可以是其中的一部分,但该模式也应该反射(reflect)在每个测试方法中。

@Test
public void testStore() throws ItemNotStoredException {
// Arrange
ISomeDependency serviceDependency = // create a mock dependency
IItemsService itemSvc = new ItemsService(someDependency);

// Act
bool result = itemSrvc.storeItem(items);

// Assert
Assert.assertTrue(result);
// assert that your dependency was used properly if appropriate
}

关于java - JUnit 测试 - 我做错了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11071967/

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