1

構成ファイルをjunitテストクラスにロードしようとすると、データソースの挿入中に以下のエラーが発生します。

org.springframework.beans.factory.NoSuchBeanDefinitionException:org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:529)のorg.springframework.beans.factory.supportで「transactionManager」という名前のBeanが定義されていません。 AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1094)at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:276)at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java: 196)org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1079)at org.springframework.test.context.transaction.TransactionalTestExecutionListener.getTransactionManager(TransactionalTestExecutionListener.java:308)org.springframework.test.context.transaction.TransactionalTestExecutionListener.beforeTestMethod(TransactionalTestExecutionListener.java:158)at org.springframework.test.context.TestContextManager.beforeTestMethod(TestContextManager.java:358)at org.springframework.test.context .junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:73)at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:82)at org.springframework.test.context.junit4.statements .SpringRepeat.evaluate(SpringRepeat.java:72)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:240)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)at org.junit.runners。ParentRunner $ 3.run(ParentRunner.java:193)at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:52)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)at org.junit .runners.ParentRunner.access $ 000(ParentRunner.java:42)at org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:184)at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks .java:61)org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)at org.junit.runners.ParentRunner.run(ParentRunner.java:236)atorg.springframework。 test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:180)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)at org .eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)at org.eclipse.jdt .internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)390)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)390)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

誰かがこれで私を助けてくれますか?

前もって感謝します

4

1 に答える 1

1

「transactionManager」にアクセスできないようです。ご覧のとおり、単体テストを行った後、 ApplicationContext.xml ファイル (または Bean が宣言されている場所) にアクセスしないと思います。

単体テストでは、注釈を使用して明示的に Bean ファイルを指定する必要があります。

これらの注釈は私のために働きます:

@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=true)
@Transactional
@ContextConfiguration(locations={"classpath:applicationContext.xml",
    "classpath:applicationContext-dao.xml",
    "classpath:applicationContext-services.xml",
    "classpath:/com/xxx/zzz/test/CompanyServiceTest-context.xml"})
public class CompanyServiceTest extends AbstractTransactionalJUnit4SpringContextTests {
private static Log LOG = LogFactory.getLog(CompanyServiceTest.class);

@Autowired
public CompanyService companyService;

@Before
public void setUp() {
    System.err.println("Clear the mailboxes...");
    Mailbox.clearAll();
}

    @Test
    public void testCreateCompany() throws IOException, BusinessException, MessagingException {
        LOG.info("Creating the company DEMO...");
    }

}

于 2012-12-03T11:29:43.503 に答える