我正在编写测试用例,我想在其中使用相同的BeanFactory.getBean()实例,只需进行一些小的更改-所以我不想编写例如:Class class=factory.getBean(lass.class);
每次,但我宁愿将其放在私有字段中,并在各种测试用例中使用class
变量。
测试类如下所示:
@ExtendWith(SpringExtension.class)
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles(value = "test")
@Import(TestConfiguration.class)
public class FeedbackServiceTest {
@Autowired
private BeanFactory beanFactory;
//I'd like to use this in the various methods:
private AppUser testSender = beanFactory.getBean("sender", AppUser.class);
//other fields to be cleared up with BeanFactory:
private final FeedbackRepository feedbackRepository = Mockito.mock(FeedbackRepository.class);
private final AppUserRepository appUserRepository = Mockito.mock(AppUserRepository.class);
private final ValueRepository valueRepository = Mockito.mock(ValueRepository.class);
private final FeedbackService feedbackService = new FeedbackServiceImpl(feedbackRepository, appUserRepository,
valueRepository);
private final AppUser testTarget = new AppUser("someUserDatas"));
private final Value testValue = new Value("someValueDatas");
private final Feedback testFeedback = new Feedback(testSender, testValue, testTarget, "otherDatas");
@Test
public void saveNewFeedback_WithValidParams_ShouldSaveFeedback() {
Mockito.when(appUserRepository.findById(testSender.getId()))
.thenReturn(Optional.of(testSender));
Mockito.when(appUserRepository.findById(testTarget.getId()))
.thenReturn(Optional.of(testTarget));
Mockito.when(valueRepository.findById(testValue.getId()))
.thenReturn(Optional.of(testValue));
feedbackService.saveNewFeedback(testFeedback);
Mockito.verify(feedbackRepository, times(1)).save(Mockito.any(Feedback.class));
}
TestConfiguration类是这样的:
@Configuration
public class TestConfiguration {
@Bean(name = "sender")
@Scope(value = ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public AppUser getAppUser() {
return new AppUser("Pista", "pista@pista.com", Gender.MALE, "p123_ABC", "USER",
LocalDate.parse("1967-10-12"));
}
}
如果我将私有AppUser testSender=beanFactory。getBean(“sender”,AppUser.class) 行,它运行良好,否则会抛出null点异常
如果我理解正确,那么您的要求是在每个方法中使用testSender的引用。为此,我建议您在FeedbackServiceTest中使用@beforeach:
public class FeedbackServiceTest {
@Autowired
private BeanFactory beanFactory;
//I'd like to use this in the various methods:
private AppUser testSender;
@BeforeEach
public void setBean(){
testSender= beanFactory.getBean("sender", AppUser.class);
}
...//rest other class
我有一个泛型抽象类AbstractBaseEntityGenericDao,它包含@Autowired字段。它工作得很好,直到我不得不为它编写一个单元测试,在所有扩展它的类的测试中不重复相同的代码。现在我在想。。。是否可以为此类类编写单元/集成测试?
我想在我的项目中测试特定的测试类,因为有很多测试类失败,我只想一次测试一个类。 我在以下文件夹中创建了测试类: 因此,我尝试了以下命令,但均无效: = 有什么帮助吗?谢谢
当我通过这个示例类模拟和运行测试时,mockito跳过了静态部分,这是有意义的,因为我模拟了HARD_CACHE的值,但同时我希望代码100%覆盖。静态字段应该在没有模拟的情况下测试吗?或者有没有一种方法可以使用模拟测试静态字段/方法/变量?
我编写了我的第一个ArchUnit测试: 这个项目是用Maven构建的,所以类在不同的目录中。 将名称以“tests”或其他东西结尾的类分开是不够的,因为有许多类不是测试,而是只存在于测试类路径中。
我只看到两种方法: 将所有字段设置为受保护(或包可见性) 为所有字段生成50个getter 创建50个委托方法来获取这些字段的状态,而不是整个对象的状态 在正常情况下,我会选择最后一个(尽管我真的不想仅仅出于测试的原因而改变界面)。但是在我的类中编写50个新方法只是为了测试真的有意义吗?在这种情况下,将字段设置为受保护的不是更好吗,因为有这么多方法,类会变得不清楚? 注意。反射是我想使用的最后一个
我一直试图让phpUnit在我的Wordpress主题的自定义PHP类上运行测试,但是无论我如何尝试添加类引用,错误总是相同的: 文件目录不正确。 为了说明这一点,Phpunit运行良好,因为我可以只使用Wordpress调用运行虚拟测试,而且它可以正常工作。例如: 文件结构如下所示: 我的朋友。xml位于WordPress根目录下,我指的是如下测试: 如果有人能告诉我为什么phpunit不能识别