私はプログラミングの世界には新しいので、私の言うことはばかげているかもしれません。EntityManagerFactory Spring起動テストのBean
私は、Eclipseの下でのJUnitのように、スプリングブートテストを実行しようとしていますが、私はちょうど私が、いくつかのガイドを読んで、このウェブサイトを閲覧しなかったがいる...春ブート注釈を使用する方法を見つけ出すことはできません私の問題を解決したものを見つけてください。
私は下のJUnitテストクラスを実行しようとしています:
java.lang.IllegalStateException: Failed to load ApplicationContext
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cDao': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.persistence.EntityManagerFactory' available
CDaoクラスからのEntityManagerパラメータがあります。JUnitテストは私に次の例外を与えるとして、これを実行する
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={CBusiness.class,CService.class,CDao.class}, loader = AnnotationConfigContextLoader.class)
@SpringBootTest
public class CalculTest {
@Autowired
CBusiness business;
@Test
public void testCalcul() throws TechnicalException {
Object object= new Object();
object.setId1("00");
object.setId2("01");
object.setNombrePlacesMaximum(new BigInteger("50"));
Long result=business.calcul(object);
assertTrue(result>0);
}
注釈@PersistenceContext、これは自動的にHibernateによって生成されたと思ったが、明らかにそうではありません...どうすればJavaコードのみを使用してEntityManagerをインスタンス化できますか?
ビジネス・レイヤー:
@Component("cBusiness")
public class CBusiness {
@Autowired
CService cService;
public long calcul(Object object) throws TechnicalException {
//Code (calls a method from CService class)
}
サービス層:
@Service
public class CService {
@Autowired
CDao cDao;
私は
ここFYI
テストによって呼び出されるクラスです...任意の.xmlファイルまたは.propertiesファイルのファイルを持っていません
ダオ・レイヤー
@Repository
@Transactional(rollbackFor = {TechnicalException.class})
public class CDao {
@PersistenceContext
EntityManager entityManager;
ビジネス層の@autowireアノテーションだけを使ってWebサービス内のメソッドをテストしようとしましたが、うまくいけばJUnitテストでインスタンス化できません。私はこのテストを実行するいくつかの方法を試しましたが、これが正しい方法であるかどうかはわかりませんので、私はどんな提案にも開放しています。
ありがとうございます。
ContextConfiguration' @削除 '...春ブーツはあなたのための検出を行います... –
私はそれを試してみましたが、今、私は次の例外があります java.lang.IllegalStateExceptionを:によって引き起こさApplicationContextのロードに失敗しました:java.lang.IllegalArgumentException:LoggerFactoryはLogback LoggerContextではありませんが、Logbackはクラスパス上にあります。 Logbackまたは競合する実装(クラスorg.slf4j.helpers.NOPLoggerFactoryをファイル/ D:/m2repo/org/slf4j/slf4j-api/1.7.24/slf4j-api-1.7.24.jarからロードする)を削除します。 WebLogicを使用している場合は、WEB-INF/weblogic.xmlのprefer-application-packagesに「org.slf4j」を追加する必要があります。org.slf4j.helpers.NOPLoggerFactory – Remi
このスタックトレースは読んでいますか?あなたはあなたの依存関係に問題があります... –