smu*_*kes 7 java eclipse memory ant junit
我的问题的核心是我担心我的Ant构建文件缺少允许测试完成并自我清理的东西.详情如下.
我有一套测试,当我通过Eclipse运行它时总是会通过,但是当我使用我的Ant构建运行它时,有时会通过或失败.测试通过JOCL使用openCL,因此我在GPU上的内存有限,必须正确管理.有时当我运行我的Ant构建时,我在输出中得到了这个,
[junit] Caused an ERROR
[junit] CL_MEM_OBJECT_ALLOCATION_FAILURE
[junit] org.jocl.CLException: CL_MEM_OBJECT_ALLOCATION_FAILURE
Run Code Online (Sandbox Code Playgroud)
问题不在于测试本身.我认为在套件的最后调用了我最需要内存的测试.当调用最后一次测试时,不知何故GPU从我之前的测试中处于不良状态.当我通过Eclipse运行测试时,这不会发生.当我让内存饥饿测试套件中的第一个测试时,它在我的Ant构建中从未失败过.这是一个熟悉的案例吗?为什么通过Eclipse运行测试始终有效?有什么我可以尝试的吗?
这是我的Ant构建中的测试目标:
<target name="test" if="testing.enabled">
<mkdir dir="${test.bin.dir}" />
<javac srcdir="test" destdir="${test.bin.dir}" debug="true" classpathref="testclasspath" source="1.6"/>
<junit haltonerror="true" haltonfailure="true">
<classpath refid="testclasspath"/>
<formatter type="plain" usefile="false" />
<batchtest>
<fileset dir="test">
<include name="*Test.java"/>
</fileset>
</batchtest>
</junit>
</target>
Run Code Online (Sandbox Code Playgroud)
如果您确定在代码中没有遗漏剩余的清理,您可以创建一个JUnit测试套件并从eclipse和ant运行它.通过创建测试套件,您可以独立于eclipse(项目中的顺序?)和ant(文件系统中的顺序?)的测试顺序,在两种情况下都使用并自行确定顺序.
如果你真的不确定你的代码是无问题的,你可以通过调用Collections.shuffle()
测试类列表来启动测试套件,在eclipse中引入未知的测试执行顺序,看看你的测试是否仍然没有失败.
归档时间: |
|
查看次数: |
3509 次 |
最近记录: |