3 回答

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
這里的其他答案都很棒,但并不完全符合我的喜好。我最終結(jié)合了
JUnit
@RunWith(@Parameterized)
(運(yùn)行兩個(gè)服務(wù)的測(cè)試)Spring 的新規(guī)則(保持
@RunWith(SpringRunner.class)
容器、appcontext、webmvc 和注入功能)
以下是片段:
@RunWith(Parameterized.class)
...
@Parameters(name = "Cached = {0}")
public static Boolean[] data() {
return new Boolean[] { Boolean.TRUE, Boolean.FALSE };
}
@ClassRule
public static final SpringClassRule springClassRule = new SpringClassRule();
@Rule
public final SpringMethodRule springMethodRule = new SpringMethodRule();
@Before
public void setUp() {
// logic to choose the injected service based on the true/false param
}

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
幾個(gè)選項(xiàng):
您可以將所有類存儲(chǔ)在一個(gè)常量中,例如
List<Class<? extends YourInterface>> classes = Arrays.asList(Implementation.class)
遍歷這些類并為每個(gè)類調(diào)用該方法您可以使用反射來查找實(shí)現(xiàn)特定接口的所有類并為每個(gè)類循環(huán)。

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可以創(chuàng)建一個(gè) bean 來保存 JavaConfig 中的實(shí)現(xiàn)列表:
public class TestConfig {
@Bean
MyService myService1(){
return new MyService1();
}
@Bean
MyService myService2(){
return new MyService2();
}
@Bean
public List<MyService> myServices(MyService myService1, MyService myService2){
List<MyService> allServices = new ArrayList<>();
allServices.add(myService1);
allServices.add(myService2);
return allServices;
}
}
并最終在您的測(cè)試中迭代此列表:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=TestConfig.class)
public class ServicesTest {
@Autowired
private List<MyService> allServices;
@Test
public void testAllServices(){
for (MyService service : allServices) {
// Test service here
}
}
}
添加回答
舉報(bào)