gpt4 book ai didi

java - 使用groovy对java类进行单元测试

转载 作者:行者123 更新时间:2023-11-30 03:04:32 25 4
gpt4 key购买 nike

对于此代码片段

@Component
public class StorageResource {

@Autowired
private Storage storage;

public String addItem(StorageItem item) {
WrappedStorageItem wsi = new WrappedStorageItem(item);
storage.add(wsi);
return wsi.getId();
}

}

单元测试看起来像这样

@Test
void testCase() {
StorageResource storageResource = new StorageResource();
Storage storageMock = createMock(Storage.class);
Whitebox.setInternalState(storageResource, Storage.class, storage);

StorageItem item = new StorageItem();
WrappedStorageItem wos = new WrappedStorageItem(item);

expectNew(WrappedStorageItem.class, item).andReturn(wos);
storageMock.add(wos);
expectLastCall();
replayAll();
storageResource.addItem(item);
verifyAll();
}

但是如果我使用 groovy 测试会是什么样子?

会不会更冗长?

最佳答案

Groovy 可以使测试变得更加简洁。多少取决于您的代码的结构以及您使用的测试库和框架。

举个例子,Groovy 为对象模拟提供了出色的支持,可以用来编写如下测试:

def mock = new MockFor(Storage)
mock.demand.add { item -> assert item instanceof WrappedStorageItem }
mock.use {
StorageResource storageResource = new StorageResource(storage: new Storage())
storageResource.addItem(new StorageItem())
// verify is implicit
}

此外,在 Groovy 中设置测试装置通常要简单得多,因为您可以利用内置列表和映射语法(例如 [1, 2, 3] 而不是x = new ArrayList(); x.add(1); x.add(2); x.add(3))。

关于java - 使用groovy对java类进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35132214/

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