Java 为什么不是';t弹簧靴';运行单元测试时是否触发s@Retryable?

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

我创建了一个基本的设置来尝试SpringRetry,但由于某些原因它不起作用。我想我有所有需要的注释,所以我不确定这里出了什么问题。任何帮助都将不胜感激

在AppConfig.java中:

@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
,因此它不会应用建议。