1. ホーム
  2. java

[解決済み] ユニットテストの実行時に assertEquals への参照が曖昧である。

2022-02-19 10:04:15

質問

私のアプリケーションでは

`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 でのテストは springmvchibernate プロジェクトでテストしようとしています。 insert しかし、それは上記のエラーを出します。 多くのチュートリアルやリファレンスを見ましたが、私はこのエラーを処理することができません。 事前にありがとうございます。

解決方法は?

コンパイラは、メソッドの呼び出しを1つの明確なメソッドに結びつけようとするとき、他のメソッドよりも特定のメソッドを識別することができなければ、コンパイルエラーを出します。あなたの場合はどうですか?

の両方のメソッド assertEquals(java.lang.String,boolean,boolean) があります。 org.testng.AssertJUnit

とメソッド の assertEquals(java.lang.String,java.lang.Object,java.lang.Object) を参照してください。 org.testng.AssertJUnit

一致

コンパイル時にこのような曖昧さの問題が発生する場合、それはあなたが assertEquals() メソッドに、2つのプリミティブな boolean を引数にとります。

そこで categoryDao.addCategory(category) は、おそらく Boolean であり boolean .

ブーリアンかブーリアンリターンか?

を返す可能性を与える。 null (として Boolean を処理する必要がある場合のみ、意味があります。 null の場合です。しかし、加算操作は真か偽のどちらかです。
なんと null を意味するのでしょうか?
ということで、これは以下を返すべきだと思います。 boolean . この方法では、コンパイラによってバインドされたメソッドがあいまいでないため、あなたのコードはうまくコンパイルされるでしょう。

assertEquals(java.lang.String,boolean,boolean) .

assertEquals() と assertTrue() どっちがいい?

また、ある式が真であるかどうかを断定するためには、単に Assert.assertTrue() メソッドを使用すると、より明示的になります。

assertTrue("sucessfully inserted..", categoryDao.addCategory(category));