com.mohendra.user
- 服务器
- Application.class //主类
package2
package3
- 域
- Campaigns.class
- SmsDomainPackage.class
- 存储库
- CampaignRepository.class
以上是我的文件夹结构,我正在尝试使用spring dataJpaTest测试CampaignRepository, 我写了以下测试
@ComponentScan(basePackages = "com.mohendra.user")
@EntityScan(basePackageClasses = SmsDomainPackage.class)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@DataJpaTest
@RestClientTest
public class CampaignRepositoryTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private CampaignRepository repository;
@Before
public void setUp() throws Exception {
}
@Test
public void findByCode() {
Campaigns campaigns = new Campaigns();
campaigns.setName("Name");
campaigns.setCode("HELP123");
campaigns.setStartDate(new Date());
campaigns.setEndDate(new Date());
this.entityManager.persist(campaigns);
Campaigns campaigns1 = repository.findByCode("HELP123");
System.out.println();
}
}
测试给出
的例外java.lang.IllegalArgumentException:未知实体: com.mohendra.user.package3.domain.Campaigns
正如您所看到的,我还使用了@ComponentScan,并且我还使用了@EntityScan尝试扫描程序包中的实体,但是它们都不起作用。 我不能更改文件夹结构使其成为标准文件,因为这不是我的项目。有解决方案吗?
答案 0 :(得分:0)
Application类应位于根包中。这样一来,您将不需要任何@CompontenScan或@EntityScan,因为Spring Boot会扫描根软件包下的所有内容
因此,我建议将Application.class
放入包装com.mohendra.user
您必须决定要使用哪个测试片。您有三个:
@SpringBootTest(classes = Application.class)
@DataJpaTest
@RestClientTest
但是我认为您只想要@DataJpaTest