有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在spring中使用autowire for Set时,如何模拟实现相同接口的所有类?

有以下课程:

public class A {
     @Autowired
     private Set<IClient> clients;  
 }

public class B implements IClient { }

public class C implements IClient { }


@RunWith(MockitoJUnitRunner.class)
public class Atest {
    @InjectMocks
    A a;

    @Mock
    IClient clients;
}

如何对Set接口使用mock,这些接口将同时包含类BC


共 (1) 个答案

  1. # 1 楼答案

    使用构造函数注入代替字段注入,然后创建两个模拟,将它们放在一个集合中,并使用该集合调用构造函数。例如:

    public class Atest {
        private A a;
    
        @Mock
        private IClient mockAClient;
    
        @Mock
        private IClient mockBClient;
    
        @Before
        public void prepare() {
            a = new A(new HashSet<>(Arrays.asList(mockAClient, mockBClient));
        }
    
    }