我有以下我想要子的方法:
ProductArray productsArray;
productsArray = dataService.getProducts(ProductFilter pf, Date date1, Date date2, boolean matured);
在我的测试课中,我有以下内容
ProductArray productsArrayTest = getProductsArrayForTest();
Mockito.when(dataServiceMock.getProducts(Mockito.any(ProductFilter.class), Mockito.any(Date.class), Mockito.any(Date.class), Mockito.any(Boolean.class))).thenReturn(productsArrayTest);
但是在此测试中 productsArray
返回为 null
;
Mockito 给出以下警告
[MockitoHint] 1. Unused... -> at
com.company.util.TestProduct.testProductLoad(TestProduct.java:157)
[MockitoHint] ...args ok? -> at
com.company.datastore.ProductLoader.processAll(ProductLoaderProcess.java:158)
这可能是什么原因?
编辑:
private ProductArray getProductsArrayTest() {
ProductArray pa = new ProductArray();
Product product = createProduct();
pa.add(product);
return pa;
}
private Product createProduct() {
Product p = new Product();
p.setPrice(1.23);
return p;
}
最佳答案
在第一条评论后编辑 - 我发现您在定义 getProductsArrayTest() 时调用了 getProductsArrayForTest() 方法。检查是否只是帖子中的错误,甚至是代码中的错误。 但是这里是代码并且测试成功。
public class Product { double price; public Product() { } public double getPrice() { return this.price; } public void setPrice(double value) { this.price=value; } }
ProductArray.class
import java.util.ArrayList; import java.util.List; public class ProductArray { private List<Product> productList; public ProductArray() { productList=new ArrayList<Product>(); } public void add(Product product) { this.productList.add(product); } public List<Product> getProductList(){ return this.productList; } }
产品测试.类
public class ProductTest { @Test public void testProduct() { DataService dataserviceMock = Mockito.mock(DataService.class); ProductArray productsArrayTest = getProductsArrayTest(); Mockito.when(dataserviceMock.getProducts(Mockito.any(ProductFilter.class), Mockito.any(Date.class), Mockito.any(Date.class), Mockito.anyBoolean())).thenReturn(productsArrayTest); assertEquals(1, dataserviceMock.getProducts(null , null , null , false).getProductList().size()); } private ProductArray getProductsArrayTest() { ProductArray pa = new ProductArray(); Product product = createProduct(); pa.add(product); return pa; } private Product createProduct() { Product p = new Product(); p.setPrice(1.23); return p; } }
关于java - 当任何 Any 参数用于方法时,Mockito stub 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61375891/