Java 当方法使用任何参数时,Mockito存根将返回null
我想采用以下方法:Java 当方法使用任何参数时,Mockito存根将返回null,java,junit,mockito,stubbing,Java,Junit,Mockito,Stubbing,我想采用以下方法: ProductArray productsArray; productsArray = dataService.getProducts(ProductFilter pf, Date date1, Date date2, boolean matured); 在我的测试课上,我有以下内容 ProductArray productsArrayTest = getProductsArrayForTest(); Mockito.when(dataServiceMock.getProd
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)
这可能是什么原因
编辑:
- 在第一条注释后编辑-
我看到您在定义getProductsArrayTest()时调用了方法getProductsArrayForTest()。检查这是否只是文章中的错误,甚至是代码中的错误。
但是,下面是代码,测试成功了
ProductArray.classpublic class Product { double price; public Product() { } public double getPrice() { return this.price; } public void setPrice(double value) { this.price=value; } }
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; } }
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;
}
}