day*_*mer 3 java spring spring-test
目前我的课看起来像
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = {DemographicAttributesManager.class})
public class DemographicAttributesManagerTest {
@Autowired
private DemographicAttributesManager demographicAttributesManager;
@Test
public void testGetGenders() throws Exception {
final Map<Integer, String> genders = demographicAttributesManager.getGenders();
assertEquals(3, genders.size());
}
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢什么?
@RunWith(SpringJUnit4ClassRunner.class)来
有没有办法默认它?以便每个测试都与该课程一起运行?
@ContextConfiguration(loader = AnnotationConfigContextLoader.class,classes = {DemographicAttributesManager.class})告诉要包含哪些类,以及它是注释驱动的测试.
有没有办法将默认设置为package扫描类和默认,我不必放AnnotationConfigContextLoader?
谢谢
在每个Test课程中我都必须包含
@RunWith(SpringJUnit4ClassRunner.class)有没有办法默认它?以便每个测试都与该课程一起运行?
不,没有办法更改RunnerJUnit 的默认值.JUnit将默认值定义Runner为org.junit.runners.JUnit4.因此,如果您想使用其他跑步者(例如SpringJUnit4ClassRunner),则必须明确声明它.这就是JUnit的工作原理.
但是,正如其他人指出的那样,@RunWith注释是继承的.因此,您可以在项目中的其他测试类扩展的基础测试类中声明它.
我必须键入
@ContextConfiguration(loader = AnnotationConfigContextLoader.class, classes = {DemographicAttributesManager.class})告诉要包含哪些类,并且它是注释驱动的测试.
你不是需要显式声明AnnotationConfigContextLoader的装载机.每当你声明classes属性时@ContextConfiguration,Spring会自动AnnotationConfigContextLoader为你使用.如果您声明静态内部@Configuration类,则使用默认检测机制也是如此.
这些都在相应的Javadoc以及Spring Reference Manual的Testing一章中有详细记载.
有没有办法将默认设置为类扫描包,默认情况下我不需要放置AnnotationConfigContextLoader?
关于AnnotationConfigContextLoader,见上文.
关于软件包扫描,不是,单独使用时没有明确支持软件包扫描@ContextConfiguration; 但是,使用带@Configuration注释的静态内部类可以为给定的包配置组件扫描@ComponentScan.当然,您也可以在使用注释的同一基本测试类中声明该配置@RunWith.
问候,
Sam(Spring TestContext Framework的作者)
| 归档时间: |
|
| 查看次数: |
4550 次 |
| 最近记录: |