1

Spring 3.1.0.RELEASE と JUnit 4.8.1 を使用しています。クラスのメンバー フィールドが JUnit テストで自動配線されない理由がわかりません。私のテストは次のようになります...

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "file:src/test/resources/testApplicationContext.xml" })
@TransactionConfiguration(defaultRollback=true)
@Transactional
public abstract class NowYouKnowEventsParserTest {

    private EventFeed eventFeed;

    @Before
    public void setUp() { 
        eventFeed = getEventFeed(16);
    }   // setUp

    @Test
    public void testParser() { 
        Assert.assertNotSame(0, eventFeed.getEvents().size());
    }   // testParser

    ...
    @Autowired
    private EventFeedsDao eventFeedsDao;

    protected EventFeed getEventFeed(final Integer id) { 
        return eventFeedsDao.findById(id);
    }   // getEventFeed
}

クラス「EventFeed」は、以下のクラスのインスタンスを呼び出します...

package com.myco.myproject.parsers;
...
public abstract class AbstractEventParser {

    @Autowired
    protected NetUtilsService netUtilsService;
    ...
}

しかし、時間になると、AbstractEventParser の「netUtilsService」メンバー フィールドは null になります。私の「testApplicationContext.xml」ファイルには、これがあり、自動配線を処理すると思っていたので、これは奇妙です...

<mvc:annotation-driven />
<context:component-scan base-package="com.myco.myproject" />

JUnit テストで自動配線を強制するにはどうすればよいですか? メンバー フィールドのセッター メソッドを追加して呼び出すことはしたくありませんが、それが唯一の方法である場合は、それで構いません。

4

1 に答える 1

0

Spring によって管理されるクラスです。つまり、または のいずれかEventFeedで注釈が付けられた EventFeed クラスです。また、あなたのテスト権で行う必要があります。私はあなたの中でそれを見ていません@Service@Component@AutowiredEventFeedAbstractParsetTest

于 2012-05-11T19:14:51.877 に答える