私のアプリケーションでは
`CategoryDao` is a `interface`, `Category` is a model `class`
私のコードは
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));
}
}
エラーは次のとおりです。
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
junit
プロジェクトでspringmvc
をhibernate
テストしようとしています。insert
モジュールでテストしようとしていますが、上記のエラーが発生します。私は多くのチュートリアルとリファレンスを見ましたが、そのエラーを処理することができません。前もって感謝します。
コンパイラーがメソッド呼び出しを1つの別個のメソッドにバインドしようとしたときに、他のメソッドよりも具体的なメソッドを識別できない場合、コンパイルエラーが発生します。それはあなたの場合です。
org.testng.AssertJUnitの両方のメソッドassertEquals(Java.lang.String、boolean、boolean)
org.testng.AssertJUnitのメソッドassertEquals(Java.lang.String、Java.lang.Object、Java.lang.Object)
一致
コンパイル時にこのあいまいさの問題がある場合は、2つのプリミティブboolean
を引数としてassertEquals()
メソッドを呼び出さないことを意味します。
したがって、categoryDao.addCategory(category)
はおそらくBoolean
を返し、boolean
は返しません。
ブール値またはブール値の戻り値?
null
を返す可能性を与えることは(Boolean
で許可されているため)、null
の場合を処理する必要がある場合にのみ意味があります。ただし、加算演算はtrueまたはfalseのいずれかです。null
はどういう意味ですか?
つまり、これはboolean
を返すはずだと思います。このようにして、コンパイラーによってバインドされたメソッドにあいまいさがないため、コードは正常にコンパイルされます。
assertEquals(Java.lang.String,boolean,boolean)
。
assertEquals()またはassertTrue()?
さらに、式が真であるかどうかをアサートするには、より明示的なAssert.assertTrue()
メソッドを使用するだけです。
assertTrue("sucessfully inserted..", categoryDao.addCategory(category));
交換
assertEquals("sucessfully inserted..",true,categoryDao.addCategory(category));
と
assertEquals("sucessfully inserted..", Boolean.TRUE, categoryDao.addCategory(category));
これはcategoryDao.addCategory(category)
が何を返すかによると思います。これを使用してブール値であるtrue
との同等性をチェックしたため、プリミティブboolean
またはオブジェクトラッパーBoolean
を返す可能性があります。
つまり、次のように呼び出している可能性があります、
assertEquals("sucessfully inserted..", true, true or false);
// with Primitive boolean values
または、
assertEquals("sucessfully inserted..", true, TRUE or FALSE);
// with Boolean values
org.testng.AssertJUnit
の以下の2つのメソッドを確認してください。
public static void assertEquals(String message、Object expected、Object actual)
そして
public static void assertEquals(String message、boolean expected、boolean actual)
したがって、3番目のパラメーターがプリミティブboolean値である場合、その値はありません。どのメソッドを呼び出すかについて曖昧であること(明らかに最初のメソッドである必要があります)。しかし、それが原始的なブール値でない場合、ここで参照しているメソッドについてあいまいさがあります 。
参照: