我想用JUnit测试我的java代码。 我正在使用当前版本的Spring。 现在我遇到了问题,单位测试在初始化后运行,而我的DataInitializer的数据在Repositorys中。
@Component
public class PizzaRunnerInitializer implements DataInitializer {
//here are the attributes and the constructor
@Override
public void initialize() {
this.addressManager.setCompanyAddress(this.addressManager.getAddress("Marcs Liebingsgruppe", "22", "210815", "Dresden"));
initializeCategories();
initializeCatalogs();
}
private void initializeCategories(){
categoryRepository.save(new Category("Getraenk", false));
categoryRepository.save(new Category("Zutat", false));
categoryRepository.save(new Category("Pizza", true));
categoryRepository.save(new Category("Salat", false));
}
private void initializeCatalogs(){
if (ingredientCatalog.findAll().iterator().hasNext() || simpleProductCatalog.findAll().iterator().hasNext() || extendableProductCatalog.findAll().iterator().hasNext()) {
return;
}
Ingredient i1 = productManager.createIngredient("Teig", Money.of(EUR, 6.0), true);
Ingredient i2 = productManager.createIngredient("Edammer", Money.of(EUR, 1.0), false);
Ingredient i3 = productManager.createIngredient("Tomate", Money.of(EUR, 1.5), false);
Ingredient i4 = productManager.createIngredient("Salami", Money.of(EUR, 1.0), false);
Ingredient i5 = productManager.createIngredient("Ananas", Money.of(EUR, 2.0), false);
Ingredient i6 = productManager.createIngredient("Feta", Money.of(EUR, 1.5), false);
Ingredient i7 = productManager.createIngredient("Schinken", Money.of(EUR, 1.0), false);
Ingredient i8 = productManager.createIngredient("Peperoni", Money.of(EUR, 2.0), false);
Ingredient i9 = productManager.createIngredient("Gouda", Money.of(EUR, 1.0), false);
Ingredient i10 = productManager.createIngredient("Zwiebel", Money.of(EUR, 1.0), false);
Ingredient i11 = productManager.createIngredient("Tomatensauce", Money.of(EUR, 0.5), true);
Ingredient i12 = productManager.createIngredient("Champignons", Money.of(EUR, 0.5), false);
Ingredient i13 = productManager.createIngredient("Kopfsalat", Money.of(EUR, 1.0), false);
Ingredient i14 = productManager.createIngredient("Rucola", Money.of(EUR, 0.5), false);
Ingredient i15 = productManager.createIngredient("Schnittlauch", Money.of(EUR, 0.5), false);
Ingredient i16 = productManager.createIngredient("DressingA", Money.of(EUR, 0.5), false);
Ingredient i17 = productManager.createIngredient("DressingB", Money.of(EUR, 0.5), false);
stockManager.registerInInventory(i1.getIdentifier(), 10);
stockManager.registerInInventory(i2.getIdentifier(), 10);
stockManager.registerInInventory(i3.getIdentifier(), 10);
stockManager.registerInInventory(i4.getIdentifier(), 10);
stockManager.registerInInventory(i5.getIdentifier(), 10);
stockManager.registerInInventory(i6.getIdentifier(), 10);
stockManager.registerInInventory(i7.getIdentifier(), 10);
stockManager.registerInInventory(i8.getIdentifier(), 10);
stockManager.registerInInventory(i9.getIdentifier(), 10);
stockManager.registerInInventory(i10.getIdentifier(), 10);
stockManager.registerInInventory(i11.getIdentifier(), 10);
stockManager.registerInInventory(i12.getIdentifier(), 10);
stockManager.registerInInventory(i13.getIdentifier(), 10);
stockManager.registerInInventory(i14.getIdentifier(), 10);
stockManager.registerInInventory(i15.getIdentifier(), 10);
stockManager.registerInInventory(i16.getIdentifier(), 10);
stockManager.registerInInventory(i17.getIdentifier(), 10);
SimpleProduct s1 = productManager.createSimpleProduct("CocaCola", Money.of(EUR, 2.5));
SimpleProduct s2 = productManager.createSimpleProduct("PepsiCola", Money.of(EUR, 2.5));
SimpleProduct s3 = productManager.createSimpleProduct("Fanta", Money.of(EUR, 2.5));
SimpleProduct s4 = productManager.createSimpleProduct("Sprite", Money.of(EUR, 2.5));
SimpleProduct s5 = productManager.createSimpleProduct("Wasser", Money.of(EUR, 2.5));
stockManager.registerInInventory(s1.getIdentifier(), 10);
stockManager.registerInInventory(s2.getIdentifier(), 10);
stockManager.registerInInventory(s3.getIdentifier(), 10);
stockManager.registerInInventory(s4.getIdentifier(), 10);
stockManager.registerInInventory(s5.getIdentifier(), 10);
List<Ingredient> list = new LinkedList<Ingredient>();
list.add(i1);
list.add(i11);
list.add(i2);
ExtendableProduct e1 = productManager.createExtendableProduct("Magherita", "Pizza", Money.of(EUR, 8.0), list);
List<Ingredient> list1 = new LinkedList<Ingredient>();
list1.add(i1);
list1.add(i2);
list1.add(i5);
list1.add(i7);
list1.add(i11);
ExtendableProduct e2 = productManager.createExtendableProduct("Hawaii", "Pizza", Money.of(EUR, 10.0), list1);
List<Ingredient> list2 = new LinkedList<Ingredient>();
list2.add(i1);
list2.add(i2);
list2.add(i11);
list2.add(i4);
list2.add(i12);
ExtendableProduct e3 = productManager.createExtendableProduct("Salami", "Pizza", Money.of(EUR, 10.0), list2);
List<Ingredient> list3 = new LinkedList<Ingredient>();
list3.add(i1);
list3.add(i2);
list3.add(i11);
list3.add(i4);
list3.add(i12);
list3.add(i8);
list3.add(i10);
ExtendableProduct e4 = productManager.createExtendableProduct("Diavolo", "Pizza", Money.of(EUR, 11.5), list3);
List<Ingredient> list4 = new LinkedList<Ingredient>();
list4.add(i13);
list4.add(i3);
list4.add(i10);
list4.add(i16);
ExtendableProduct e5 = productManager.createExtendableProduct("SalatA", "Salat", Money.of(EUR, 4.0), list4);
List<Ingredient> list5 = new LinkedList<Ingredient>();
list5.add(i13);
list5.add(i3);
list5.add(i10);
list5.add(i17);
list5.add(i14);
list5.add(i15);
ExtendableProduct e6 = productManager.createExtendableProduct("SalatB", "Salat", Money.of(EUR, 4.0), list5);
stockManager.registerInInventory(e1.getIdentifier(), 0);
stockManager.registerInInventory(e2.getIdentifier(), 0);
stockManager.registerInInventory(e3.getIdentifier(), 0);
stockManager.registerInInventory(e4.getIdentifier(), 0);
stockManager.registerInInventory(e5.getIdentifier(), 0);
stockManager.registerInInventory(e6.getIdentifier(), 0);
}
例如我想测试ProductManager的这个方法:
public List<Product> getByCategory(Category category){
List<Product> list = new LinkedList<Product>();
for(Product product: ingredientCatalog.findAll()){
for(String productCategory: product.getCategories()){
if(productCategory.equalsIgnoreCase(category.getName())) list.add(product);
}
}
for(Product product: simpleProductCatalog.findAll()){
for(String productCategory: product.getCategories()){
if(productCategory.equalsIgnoreCase(category.getName())) list.add(product);
}
}
for(Product product: extendableProductCatalog.findAll()){
for(String productCategory: product.getCategories()){
if(productCategory.equalsIgnoreCase(category.getName())) list.add(product);
}
}
return list;
}
但如果我像这样测试它不是一个空列表。在列表中是我初始化的元素。
public class ProductManagerTest extends AbstractIntegrationTests{
@Autowired
ProductManager productManager;
@Autowired
CategoryRepository categoryRepository;
@Test
@Transactional
public void getByCategoryTest(){
for(Category category: categoryRepository.findAll()){
assertThat(productManager.getByCategory(category), is(equalTo(new LinkedList<Product>())));
}
}
}
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(classes = Application.class)
public abstract class AbstractIntegrationTests {
}
我的问题是有没有办法在初始化之前运行测试,还是我必须关闭初始化程序?
顺便说一句: “圣诞快乐”
PS:该方法正在运行,但大学要求我测试我的所有代码