我在一个个人项目上使用TDD。
由于我不应该在没有失败测试的情况下编写任何东西(代码、XML配置、SQL等等),所以我想知道如果我想设置spring,我可以编写什么样的“单元”测试(可能更像是集成测试)。
让我们说,我想在Springcontext.xml文件中编写类似的内容:
<context:component-scan base-package="com.abc.controllers" />
<bean id="viewResolver"
class="org.springframework.web.servlet.view.UrlBasedViewResolver">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>你能为“上下文:组件扫描”添加一个测试吗?
那么您应该在bean“/can”上测试什么呢?
下面是我为测试编写的一些代码:
package com.abc.test.integration;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.web.servlet.view.UrlBasedViewResolver;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "file:web/WEB-INF/spring-servlet.xml" })
public class SpringServletContextConfigurationTest {
@Autowired
private ApplicationContext applicationContext;
@Test
public void TestControllerContextConfigurationIsNotNull() {
assertNotNull(applicationContext);
}
@Test
public void TestViewBeanResolverExists() {
assertEquals(true, applicationContext.containsBean("viewResolver"));
}
}关于这个“设置”还有什么可以测试的吗?
发布于 2013-02-17 14:55:30
拜托,每当你听到有人说:
“不要在没有失败测试的情况下编写任何产品代码”
要么无视他们,要么照我所做的去做,想象他们(正确)说:
“不要在没有失败测试的情况下编写任何域逻辑”。
请不要担心您的Spring配置。如果你搞错了,你猜怎么着?当您尝试使用它时,您的应用程序将无法工作。如果发生这种情况,您只需进行修复并继续前进。世界上没有任何考验能拯救你。你把这个关于TDD的问题贴上了标签。这里有一个秘密,TDD与测试没有什么关系。您可以获得一套自动测试来捕获回归,这是一个额外的好处。TDD比其他任何东西都更多地是一个设计过程。无论您自动化了多少,手动测试仍然是必需的。
如果您有一些端到端的测试,这些测试只是充当烟雾试验,那么一旦您破坏了Spring配置,您就会注意到。只需改变您的源代码管理,您将立即看到您所做的更改。
https://stackoverflow.com/questions/12064857
复制相似问题