有可能让grails测试应用程序执行用java编写的JUnit测试吗?

有可能让grails测试应用程序执行用java编写的JUnit测试吗?,grails,Grails,在Grails2.5中,是否可以用java编写测试(单元和集成),并由grails测试运行程序(grails测试应用程序)执行这些测试 我会提供一些关于我们情况的背景资料。如果我们有一个全新的应用程序,我们只需在groovy中编写spock测试,一切都会很好。然而,我们有一个大型应用程序,它在几年前作为一个用java编写的SpringMVC应用程序启动。大约3年前,我们将其移植到Grails2.1。当我们将它移植到grails中时,它的一部分被转换为groovy/grails,但大部分仍然是ja

在Grails2.5中,是否可以用java编写测试(单元和集成),并由grails测试运行程序(grails测试应用程序)执行这些测试

我会提供一些关于我们情况的背景资料。如果我们有一个全新的应用程序,我们只需在groovy中编写spock测试,一切都会很好。然而,我们有一个大型应用程序,它在几年前作为一个用java编写的SpringMVC应用程序启动。大约3年前,我们将其移植到Grails2.1。当我们将它移植到grails中时,它的一部分被转换为groovy/grails,但大部分仍然是java,包括许多测试代码。由于grails在幕后使用SpringMVC,因此我们可以不费吹灰之力就让它工作。在Grails2.1中,grails测试运行程序(grails测试应用程序)确实可以毫无问题地为我们运行java测试(它们都是JUnit4测试)。然而,我们现在正在升级到Grails2.5,我们使用Grails2.5运行“grails测试应用程序”,只执行groovy测试——java测试现在都被忽略了。有人知道如何让grails在Grails2.5中执行java测试吗

下面是一个在grails 2.1下运行的集成测试示例,但在grails 2.5中被忽略:

package com.finch.google.adwords.updaters;

import com.finch.domain.client.Client;
import com.finch.testing.DomainCreatorUtil;
import com.finch.testing.TestProfile;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.annotation.IfProfileValue;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;


@IfProfileValue(name=TestProfile.INTEGRATION_WS, value=TestProfile.RUN)
@ContextConfiguration(locations={"/config/applicationContext.xml","/config/dbLocalPoolContext.xml","/config/testContext.xml"})
public class AccountUpdaterTest extends AbstractJUnit4SpringContextTests {

    @Autowired
    private DomainCreatorUtil mDcu;

    @Autowired
    private AccountUpdater mAccountUpdater;

    public void testDataPartitions() {
        Client client = mDcu.addNewTestClient();
        assertFalse(mAccountUpdater.confirmPartitions(client));
        mAccountUpdater.createPartitions(client);
        assertTrue(mAccountUpdater.confirmPartitions(client));
        mAccountUpdater.dropPartitions(client);
        assertFalse(mAccountUpdater.confirmPartitions(client));
    }
}

该测试位于grails项目的test/integration目录下(grails测试的标准位置)。我们知道,我们无法利用grails为此类测试提供的许多优秀测试功能,但这些都是旧式junit测试,只是测试java代码,所以这很好——我们只希望它们在执行“grails测试应用程序”时运行,就像在grails 2.1下一样。

您尝试过将其放在
/test/unit
文件夹中吗?这应该能自动工作。是的,我试过了,但不起作用。在调试到grails测试类之后,当前的grails测试运行程序(从grails2.5.1开始)似乎正在寻找以文件扩展名“.groovy”结尾的测试文件。在我看来,测试架构的设计是为了实现备用测试运行程序,但我不知道如何实现。您找到解决方案了吗?原因如下:谢谢,Graeme。现在要找到解决办法:-)我没有找到解决办法。我们最终将所有java测试转换为groovy来解决这个问题。