Java 为什么不是';t弹簧靴';运行单元测试时是否触发s@Retryable?
我创建了一个基本的设置来尝试SpringRetry,但由于某些原因它不起作用。我想我有所有需要的注释,所以我不确定这里出了什么问题。任何帮助都将不胜感激 在AppConfig.java中:Java 为什么不是';t弹簧靴';运行单元测试时是否触发s@Retryable?,java,spring,testing,junit,mockito,Java,Spring,Testing,Junit,Mockito,我创建了一个基本的设置来尝试SpringRetry,但由于某些原因它不起作用。我想我有所有需要的注释,所以我不确定这里出了什么问题。任何帮助都将不胜感激 在AppConfig.java中: @SpringBootApplication @EnableRetry public class AppConfig { //run the spring application } 在SomeClass.java中: @Component public class SomeClass{ p
@SpringBootApplication
@EnableRetry
public class AppConfig {
//run the spring application
}
在SomeClass.java中:
@Component
public class SomeClass{
public SomeClass() { }
int counter = 0;
@Retryable(value = { SomeException.class }, maxAttempts = 3)
public void someMethod(){
counter++;
System.out.println(counter);
throw new SomeException("An exception was thrown!");
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes=AppConfig.class)
public class TestSomeClass {
@Test
public void test() {
SomeClass obj = new SomeClass();
obj.someMethod();
}
}
在TestSomeClass.java中:
@Component
public class SomeClass{
public SomeClass() { }
int counter = 0;
@Retryable(value = { SomeException.class }, maxAttempts = 3)
public void someMethod(){
counter++;
System.out.println(counter);
throw new SomeException("An exception was thrown!");
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
@ContextConfiguration(classes=AppConfig.class)
public class TestSomeClass {
@Test
public void test() {
SomeClass obj = new SomeClass();
obj.someMethod();
}
}
当我运行测试时,计数器将只打印“1”,并引发异常,因此它不会像预期的那样重新运行。注入bean,不要使用您自己的对象。与以下原因相同:Spring没有管理您的
SomeClass
,因此它不会应用建议。