Java 斯波克测试团队城市的permgen用完了

Java 斯波克测试团队城市的permgen用完了,java,teamcity,spock,Java,Teamcity,Spock,我们有几个Spock测试,当在一个构建中一起运行时,由于“permgen空间”而失败。我应该注意,一些测试确实通过了,而另一些则没有。我做了明显的第一步,并尝试增加permgen和maxPermSize的java参数,但没有效果。为此,我在teamCity中使用了“build parameters”,创建了一个名为“env.JAVA_OPTS”的新参数,并将此字符串作为值: -XX:MaxPermSize=256m 我们使用Ant作为构建工具。下面是运行测试的目标。顺便说一下,我确实在分叉模

我们有几个Spock测试,当在一个构建中一起运行时,由于“permgen空间”而失败。我应该注意,一些测试确实通过了,而另一些则没有。我做了明显的第一步,并尝试增加permgen和maxPermSize的java参数,但没有效果。为此,我在teamCity中使用了“build parameters”,创建了一个名为“env.JAVA_OPTS”的新参数,并将此字符串作为值:

-XX:MaxPermSize=256m 
我们使用Ant作为构建工具。下面是运行测试的目标。顺便说一下,我确实在分叉模式下尝试过:

<target name="test" depends="compileTests">
        <junit>
          <formatter type="plain" usefile="false" />
          <classpath path="${testBuildDir}" />
          <classpath refid="classpath" />  
                  <classpath path="${deployClassesDir}" />        
          <batchtest>
            <fileset dir="${testBuildDir}">
                <include name="**/*Spec.class"/>                                
            </fileset>
          </batchtest>
        </junit>
    </target>

问题很可能与这一类无关。如何在TeamCity上运行测试?哪个构建工具?您是如何增加永久性设置的?嗨,彼得,我在编辑中为您的问题添加了答案。您是对的,不同的类也会发生这种情况。您必须找到正确的方法为运行测试的JVM设置更高的permgen限制。我假设Ant JUnit任务有一个配置选项,特别是如果测试是在分叉模式下运行的。我使用了fork=“yes”、forkmode=“perBatch”和maxmemory=“2048m”。我在ant中尝试过使用一些Junit标记参数,但看起来可能是我没有给它足够的内存。如果你回答,我会把你的答案记为正确答案。
class CitiUserPasswordValidatorSpec extends Specification{

@Shared def username = "username1";
@Shared def citiUserPasswordValidator = new ident.web.citi.CitiUserPasswordValidator()
private String invalidPassword;


@Ignore
def "Password is valid." (){
    setup:
        def facesContextMock = Mock(FacesContext)
        def uiComponentMock = Mock(UIComponent)
        def uiInputMock = Mock(UIInput)
        def uiViewRootMock = Mock(UIViewRoot)

        def password = "aBcqwe123"

        facesContextMock.getViewRoot() >> uiViewRootMock
        uiViewRootMock.findComponent("RtWindow:buttons:username") >> uiInputMock
        uiInputMock.getSubmittedValue() >> username
    when:
        citiUserPasswordValidator.validate(facesContextMock, uiComponentMock, password);
    then:
        notThrown ValidatorException
}...