我有以下测试课
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"/services-test-config.xml"})
public class MySericeTest {
@Autowired
MyService service;
...
}
Run Code Online (Sandbox Code Playgroud)
是否可以通过services-test-config.xml其中一种方法以编程方式访问?喜欢:
ApplicationContext ctx = somehowGetContext();
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释Spring Framework的LocalContainerEntityManagerFactoryBean和LocalEntityManagerFactoryBean之间的区别是什么?
我有一个会话范围的bean,它保存每个http会话的用户数据.我想编写一个Junit测试用例来测试会话范围的bean.我想编写测试用例,以便它可以证明每个会话都会创建bean.任何指针如何编写这样的Junit测试用例?
我使用的是Spring 3.2,Hibernate和JUnit 4.
我的Dao课程如下:
@Transactional public class SomeDaoImpl implements SomeDao {
如果直接从Web应用程序执行,则对此工作进行更新操作.但是,我发现执行更新方法的junit集成测试实际上并不会保留更改.在执行junit方法时,事务是否会滚动事务?
我们正与同事争论这种方法.他们说只在集成或功能级别上使用SpringRunner.
问题是在下面的级别使用它的利弊是什么?
例如,我有简单的bean:
public class RewardDurationCalculator {
private Clock clock;
public OptionalLong calculate(DurationType durationType, List<Pass> passes) {
long now = Instant.now(clock).getEpochSecond();
switch (durationType) {
case FULL_PASS:
return getCurrentPassDuration(passes, now);
case TILL_THE_END_OF_THE_CURRENT_ACTIVE_PASS:
return getTimeInCurrentPassLeft(passes, now);
}
return OptionalLong.empty();
}
private OptionalLong getCurrentPassDuration(List<Pass> passes, long now) {
return passes.stream()
.filter(currentPass(now))
.mapToLong(Pass::getDuration)
.findFirst();
}
private OptionalLong getTimeInCurrentPassLeft(List<Pass> passes, long now) {
return passes.stream()
.filter(currentPass(now))
.mapToLong(pass -> getEndTs(pass) - now)
.findFirst();
}
private Predicate<Pass> currentPass(long now) {
return pass -> pass.getStartTs() >= now && …Run Code Online (Sandbox Code Playgroud) spring ×5
spring-test ×4
hibernate ×2
junit ×2
java ×1
jpa ×1
junit4 ×1
spring-mvc ×1
spring-orm ×1
springrunner ×1
unit-testing ×1