Grails 如何制作只用于测试的方法?

Grails 如何制作只用于测试的方法?,grails,groovy,spock,Grails,Groovy,Spock,大家好,我正在尝试测试父控制器中的声明性异常处理。问题是这个 异常处理程序方法必须在编译时出现。具体而言,不支持元编程到控制器类上的异常处理程序方法 资料来源: 只为测试添加一个方法是我的解决方案之一,但我认为在开发或生产环境中公开它不是一个好的做法。有什么方法可以使它只在测试环境中可用吗?我不明白为什么需要添加一个只在测试环境中可用的方法来测试异常处理?就我个人而言,我会尝试通过使用一组无效的参数调用控制器来测试这一点,这些参数会导致抛出异常,或者使用模拟/元编程来更改操作,使其始终抛出异常

大家好,我正在尝试测试父控制器中的声明性异常处理。问题是这个

异常处理程序方法必须在编译时出现。具体而言,不支持元编程到控制器类上的异常处理程序方法

资料来源:


只为测试添加一个方法是我的解决方案之一,但我认为在开发或生产环境中公开它不是一个好的做法。有什么方法可以使它只在测试环境中可用吗?

我不明白为什么需要添加一个只在测试环境中可用的方法来测试异常处理?就我个人而言,我会尝试通过使用一组无效的参数调用控制器来测试这一点,这些参数会导致抛出异常,或者使用模拟/元编程来更改操作,使其始终抛出异常

这里有一种方法可以使一个方法只在测试环境中可用,尽管我自己并不倾向于使用它:

class Foo {

  def testOnlyMethod() {
    if (environment.current = Environment.TEST) {
      // do whatever this method is supposed to do in the test env
    } else {
      // in non-test envs, this method behaves similarly to a non-existent method
      throw new MissingMethodException()
    }
  }
}

还有其他类似于使用注释的方法吗@CompileAt'Test'def testMethod{}@fareExistence通常您应该将所有测试代码放在src/Test中,这样就不需要像@CompileAt'Test'这样的东西了