我是JUnit自动化测试的新手,真的很想开始自动化我的测试。这是一个 Spring Boot 应用程序。我使用了基于 Java 的注释样式而不是基于 XML 的配置。
我有一个测试类,我想在其中测试一种根据用户输入检索响应的方法。
测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SampleTest(){
@Autowired
private SampleClass sampleClass;
@Test
public void testInput(){
String sampleInput = "hi";
String actualResponse = sampleClass.retrieveResponse(sampleInput);
assertEquals("You typed hi", actualResponse);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的“SampleClass”中,我已经自动装配了一个这样的 bean。
@Autowired
private OtherSampleClass sampleBean;
Run Code Online (Sandbox Code Playgroud)
在我的“OtherSampleClass”中,我注释了一个方法,如下所示:
@Bean(name = "sampleBean")
public void someMethod(){
....
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,当我尝试在没有@RunWith和@SpringBootTest注释的情况下运行测试时,当我尝试运行测试时,我注释@Autowired的变量为空。当我尝试使用这些注释 RunWith & SpringBootTest 运行测试时,我得到一个
由 BeanCreationException 引起的 IllegalStateException:创建名为“sampleBean”的 bean 时出错,并且无法加载由 BeanInstantiationException 引起的应用程序上下文。
当我尝试像用户一样使用它时,该代码“正常”工作,因此我始终可以通过这种方式进行测试,但我认为自动化测试对程序的寿命有好处。
我已经使用Spring Boot 测试文档来帮助我解决这个问题。
我正在使用.replace方法删除字符串中的字符.我遇到的问题是我正在使用参数
.replace("#", "")
Run Code Online (Sandbox Code Playgroud)
从字符串中删除主题标签,例如"#hello".替换方法正在执行删除主题标签时所需的操作,但是当我使用它时,它会在字符串中留下实际的空白空间.所以"#hello"变成"你好",我真的希望它是"你好".我可以使用不同的方法或我可以用来实现我想要的不同参数吗?