Verweis auf assertEquals mehrdeutig ist, wenn ein unit test
In meiner Anwendung
`CategoryDao` is a `interface`, `Category` is a model `class`
Mein code ist
CategoryTestCase.java
package com.binod.onlineshopping.category.test;
import com.binod.onlineshopping.category.dao.CategoryDao;
import com.binod.onlineshopping.category.model.Category;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import static org.testng.AssertJUnit.assertEquals;
/**
* Created by binod on 7/13/17.
*/
public class CategoryTestCase {
private static AnnotationConfigApplicationContext context;
private static CategoryDao categoryDao;
private Category category;
@BeforeClass
public static void init() {
context = new AnnotationConfigApplicationContext();
context.refresh();
categoryDao = (CategoryDao) context.getBean("categoryDao");
}
@Test
public void addCategory(){
category=new Category();
category.setCname("Television");
category.setCdescription("TV is the product");
category.setImageUrl("c_Tv.png");
assertEquals("sucessfully inserted..",true,categoryDao.addCategory(category));
}
}
Der Fehler ist :
Error:(34, 6) java: reference to assertEquals is ambiguous
both method assertEquals(java.lang.String,boolean,boolean) in org.testng.AssertJUnit and method assertEquals(java.lang.String,java.lang.Object,java.lang.Object) in org.testng.AssertJUnit match
Ich versuche junit
test in meiner springmvc
mit hibernate
Projekt.Ich bin versucht zu testen, in meinem insert
Modul.aber es gibt einen oben genannten Fehler.
Ich sah viele Tutorials und Referenzen, aber ich bin nicht in der Lage zu handhaben, dass Fehler.
Vielen Dank im Voraus.
- Ich nehme an
categoryDao.addCategory
habenBoolean
geben. Bin ich im Recht? - oder...
assertTrue("successfully inserted", categoryDao.addCategory(category))
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn der compiler versucht, an gebunden einen Methodenaufruf an eine bestimmte Methode, wenn Sie es nicht schafft zu identifizieren, die eine Methode mehr spezifische als andere, es gibt einen Kompilierungsfehler. Es ist Ihr Fall.
Wenn Sie diese Mehrdeutigkeit problem bei der Kompilierung, das bedeutet, dass Sie nicht aufrufen, die
assertEquals()
Methode mit zwei primitivenboolean
als Argumente.So
categoryDao.addCategory(category)
gibt sehr wohlBoolean
und nichtboolean
.Boolean oder boolean zurück ?
Die Möglichkeit geben, zurück
null
(wieBoolean
erlaubt es) macht nur dann Sinn, wenn Sie behandeln müssen, dienull
Fall. Aber eine Zugabe operation ist entweder true oder false.Was für ein
null
bedeuten könnte ?Also, ich denke, dies sollte zurück
boolean
.Auf diese Weise können Sie code kompilieren fein wie die Methode gebunden, die der compiler wäre ohne jeden Zweifel auszuschließen :
assertEquals(java.lang.String,boolean,boolean)
.assertEquals() oder assertTrue()?
Außerdem geltend zu machen, wenn ein Ausdruck wahr ist, Sie können einfach
Assert.assertTrue()
Methode, ist expliziter :Ersetzen
mit
Ich denke, das hängt davon ab, was
categoryDao.addCategory(category)
gibt. Seit Sie es verwendet haben, um zu überprüfen auf die Gleichstellung mittrue
, die einen booleschen Wert zurückgeben kann, eine primitiveboolean
oder ein Objekt-wrapperBoolean
.d.h.
Sie könnte die Berufung auf Sie als,
oder,
schauen Sie unter zwei Methoden in
org.testng.AssertJUnit
,und
Also, wenn Ihr Dritte parameter ist eine primitive boolean Wert, es sollte nicht einer Zweideutigkeit über die Methode invoke (es eindeutig sollte die erste sein).
Aber , wenn es nicht ein prmitive boolean dann gibt es eine Mehrdeutigkeit über die Methode, die Sie hier sprechen.
Finden :