当前位置: 首页 > 知识库问答 >
问题:

如何从测试用例的application.properties文件中获取参数

慕逸仙
2023-03-14

我有以下控制器类

@Component
public class Controller{

@Value("${details}")
private String detail1;

@Value("${otherdetails}")
private String detail2;

public ModelClass getSomeDetails(String name, int age) {
   Serviceclass serviceobject = new Serviceclass();

   //some Code

   serviceobject.doSomething(name, age, detail1, detail2);
  }
}

完成后,我需要在一个测试用例中测试这个方法。我的测试课程如下。我有申请表。/src/test/resources文件夹中的属性文件

@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource(locations="classpath:application.properties")
public class testClass{
@Test
public void getDetails() {
Controller controllerObject = new Controller();
controllerObject.getSomeDetails("name", 22);

//Other code
  }
}

当我这样做时,应用程序。属性具有details和otherdetails参数,但返回null。

我应该如何使用它们来获取控制器类中的值?

共有2个答案

曹驰
2023-03-14

您需要让Spring实例化您的Controller类,而不是自己手动执行new

@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource(locations="classpath:application.properties")
public class testClass{
  @Autowired
  private Controller controllerObject;

  @Test
  public void getDetails() {

    controllerObject.getSomeDetails("name", 22);

    //Other code
  }

  @TestConfiguration
  static class TestConfig {
    @Bean
    public Controller controller() {
      return new Controller();
   }
  }
}

请注意,您还可以将@RunWith(SpringJUnit4ClassRunner.class)替换为@RunWith(SpringRunner.class)

除了添加内部类,您还可以让Spring测试通过用@SpringBootTest注释测试来启动完整的应用程序。如果您知道要测试应用程序的哪一部分,您可以通过使用测试切片来获得更好的性能。

蒋典
2023-03-14

不要手动实例化控制器,而是将控制器自动连接到测试类中。

@RunWith(SpringJUnit4ClassRunner.class)
@TestPropertySource(locations="classpath:application.properties")
public class testClass{

@Autowired Controller controllerObject;

@Test
public void getDetails() {
controllerObject.getSomeDetails("name", 22);

//Other code
  }
}
 类似资料:
  • 当我调试测试方法时,我看到变量是从文件中读取的。但是,在方法中,我看到变量是null。如何设置变量,以便在尝试测试此方法时在方法中可用?

  • 我正在尝试为我的sping-boot应用程序设置测试。在常规执行中,我从. env文件中获取一些值,这些值是我在运行配置中指定的,如下所示: 但当我尝试运行最简单的测试时,它会失败,但有一个例外: 加载Application Contextjava.lang.IllegalStateException失败:加载Application Context失败………原因:org.springframewo

  • 问题内容: 我如何获取 当前正在运行的测试用例名称 ,而在testsuite集合中却有16个测试用例。测试按顺序执行(按照将测试添加到testSuite集合的顺序)。当我将所有测试添加到testSuite集合中时,我可以预览该对象,但是如何在测试运行时获取当前正在执行的测试。也许某些变量保存了此信息? 例: 使用Selenium-RC框架执行测试。 问题答案: unittest.TestCase.

  • 我想通过java反映获得一个类的(打包在jar文件中)注释参数。 > 我这样的注释 我的班级是这样的 我的密码是这样的 调试windows信息

  • 我必须从文件中获取一个数字,有些文件包含字母和数字。比如(dsh8kuebw9)或者有(8)这样的空格,我怎样才能得到这些数字?我试过很多次了。我有一个方法可以找到一个数字出现在一个数字中的方法是count8方法。 parseInt将文件的行转换为整数,但由于在某些文件中有字母,我的方法遇到了问题,因为它只接受整数而不接受字符串

  • 坦率地说,我甚至不知道这是否可能。但我想做的是如下所示。 > 我通过终端中的javac命令从ClassFile.java制作了一个类文件。 然后我想从. java文件或. class文件中获取一个实例。 接下来,我在eclipse中做了另一个项目,因为你猜这个项目路径和上面的文件路径完全不同。例如,ClassFile.java/class文件可以位于“下载”文件夹中,另一方面,新的eclipse项