- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 CourseServiceImpl 的 courseDao 字段中添加模拟对象,但它不起作用。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(
locations = {"file:src/main/webapp/WEB-INF/config/servlet-config.xml"}
)
@ActiveProfiles("test")
public final class CourseServiceTest {
@Mock
private CourseDao courseDao;
@Autowired
private CourseService courseService;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testCourseServiceNotNull() {
assertNotNull(courseService);
assertNotNull(courseDao);
ReflectionTestUtils.setField(courseService, "courseDao", courseDao, CourseDao.class);
}
ReflectionTestUtils.setField(new CourseServiceImpl(), "courseDao", courseDao, CourseDao.class);
<mvc:annotation-driven />
<mvc:resources location="pdfs" mapping="/pdfs/**" />
<security:global-method-security
pre-post-annotations="enabled" />
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/view/" p:suffix=".jsp" p:order="2" />
<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
p:contentNegotiationManager-ref="contentNegId" p:defaultViews-ref="defaultViewList"
p:order="1" />
<bean id="contentNegId"
class="org.springframework.web.accept.ContentNegotiationManager">
<constructor-arg>
<bean
class="org.springframework.web.accept.PathExtensionContentNegotiationStrategy">
<constructor-arg>
<map>
<entry key="json" value="application/json" />
<entry key="xml" value="application/xml" />
</map>
</constructor-arg>
</bean>
</constructor-arg>
</bean>
<util:list id="defaultViewList">
<bean
class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
<bean class="org.springframework.web.servlet.view.xml.MarshallingView">
<constructor-arg>
<bean class="org.springframework.oxm.xstream.XStreamMarshaller"
p:autodetectAnnotations="true" />
</constructor-arg>
</bean>
</util:list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"
p:order="0" />
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.SessionLocaleResolver"
p:defaultLocale="en" />
<bean id="messageSource"
class="org.springframework.context.support.ResourceBundleMessageSource"
p:basename="messages" />
<context:property-placeholder location="classpath:messages.properties" />
<import resource="/hibernate-config.xml" />
<import resource="/hibernate-config-test.xml" />
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close" p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/school-repo-test" p:username="user"
p:password="password" />
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"
p:dataSource-ref="myDataSource" p:hibernateProperties-ref="hibernateProps"
p:annotatedClasses-ref="mapClasses">
</bean>
<util:list id="mapClasses">
<value>org.school.model.Course</value>
<value>org.school.model.Role</value>
<value>org.school.model.Staff</value>
<value>org.school.model.Student</value>
<value>org.school.model.Subject</value>
</util:list>
<util:properties id="hibernateProps">
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.show_sql">true</prop>
</util:properties>
<bean id="txManager"
class="org.springframework.orm.hibernate4.HibernateTransactionManager"
p:sessionFactory-ref="sessionFactory" />
@Service(value = "courseService")
@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public class CourseServiceImpl implements CourseService {
@Autowired
private MessageSource messageSource;
@Autowired
private CourseDao courseDao;
@Autowired
private ApplicationContext context;
最佳答案
您的 CourseServiceImpl
类(class)有 @Transactional
注释,表示使用 "Transactional"
包裹的 bean 实例在它作为依赖注入(inject) CourseServiceTest
之前的代理以及 Spring 上下文中的所有其他 bean。这样的代理实例隐藏了所有 private
原始字段 CourseServiceImpl
实例。
所以你不能访问你想要的字段,因为注入(inject)了 courseService
实例不是原来的CourseServiceImpl
类了,它是动态的cglib
或 JDK
代理类。
关于spring - ReflectionTestUtils 在 Spring 测试中不能与 @Autowired 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39989090/
我正在为一个使用静态类ProcessTimer的类编写单元测试。准确地说,ProcessTimer.startTimer()。 我正在寻找一种方法来模拟此调用。我以前使用过普通的 Reflection
我使用 ReflectionTestUtils 在我的服务类中设置 int 字段来测试该类。我的服务类别如下: @Service public class SampleService { @V
我有一个像这样的静态最终字段: class SomeClass { static final String CONST = "oldValue"; } 我正在尝试在测试中更改该字段,如下所示:
我正在努力解决如何覆盖 .yml 文件内的属性文件 我们使用Spring框架并使用注释(例如@InjectMocks)。 我在配置项目 YML 文件中声明了一个名为“one-platform-prop
我正在尝试使用 Mockito 测试 Spring Boot Controller 。我正在关注本教程:https://www.javacodegeeks.com/2013/07/getting-st
我有一个实现接口(interface)的类。该类有一个私有(private)双字段 field1 ,它使用 @Value spring 注释从应用程序属性中读取值。 我正在开发测试,我需要从该类填充该
我正在开发一个名为 acme-platform 的多模块 Maven 项目,模块设置如下: 顶点管理员 极致通用 极致全局 极致服务 acme-客户端 acme-注册 顶点属性 极限测试 (它们在 a
我是 JUnittesting 的新手,所以我有一个问题。谁能告诉我为什么我们在 Junit 测试中使用 ReflectionTestUtils.setField() 示例。 最佳答案 正如评论中提到
我正在尝试在 CourseServiceImpl 的 courseDao 字段中添加模拟对象,但它不起作用。 @RunWith(SpringJUnit4ClassRunner.class) @Cont
我是一名优秀的程序员,十分优秀!