2015-05-12 77 views
0

我试图使用新的EvoSuite(0.1.1),但是,它在下面的例外情况下失败了。我已经尝试了几个班,但结果通常是相同的。有时它能够完成,没有例外。我正在使用Java 8的Ubuntu 14.04 64位。-projectCP参数是正确的。我附上了一个更简单的一代和CUT的输出。使用EvoSuite时出现NullPointerException

命令:

java -jar ../../sette-tool/test-generator-tools/evosuite/evosuite.jar -projectCP build -generateTests -Dsearch_budget=10 -class hu.bme.mit.sette.snippets._1_basic.B2_conditionals.B2a_IfElse 

输出:

类的
* EvoSuite 
* Going to generate test cases for class: hu.bme.mit.sette.snippets._1_basic.B2_conditionals.B2a_IfElse 
* Starting client 
* Connecting to master process on port 12480 
* Analyzing classpath: 
    - build 
* Finished analyzing classpath 
* Generating tests for class hu.bme.mit.sette.snippets._1_basic.B2_conditionals.B2a_IfElse 
* Test criteria: 
    - Line Coverage 
    - Branch Coverage 
    - Exception 
    - Mutation testing (weak) 
    - Method-Output Coverage 
    - Top-Level Method Coverage 
* Setting up search algorithm for individual test generation 
* Total number of test goals: 
    - Line 55 
    - Branch 82 
    - Exception 0 
    - MutationFactory 333 
    - Output 18 
    - Method 6 
* Total number of test goals: 494 
* Budget: 10 

! Budget exceeded 
* GA-Budget: 
    - MaxTime :    1,431,415,037/10   Finished! 
    - GlobalTime :      16/600   
! #Goals that were not covered: 125 
* Search finished after 14s, 11 statements, best individual has fitness 145.43707410246085 
* Covered 369/494 goals 
* Coverage of criterion LINE: 73% 
* Number of covered goals: 40 
* Coverage of criterion BRANCH: 77% 
* Number of covered goals: 63 
* Coverage of criterion EXCEPTION: 100% (no goals) 
* Coverage of criterion WEAKMUTATION: 74% 
* Number of covered goals: 248 
* Coverage of criterion OUTPUT: 67% 
* Number of covered goals: 12 
* Coverage of criterion METHOD: 100% 
* Number of covered goals: 6 
* Resulting test suite: 2 tests, length 37 
* Computation finished 
[MASTER] 09:17:17.601 [pool-1-thread-2] ERROR ClientNodeImpl - Error when generating tests for: hu.bme.mit.sette.snippets._1_basic.B2_conditionals.B2a_IfElse with seed 1431415019886. Configuration id : null 
java.lang.NullPointerException: null 
    at org.evosuite.ga.Chromosome.getNumOfNotCoveredGoals(Chromosome.java:415) ~[evosuite.jar:na] 
    at org.evosuite.statistics.SearchStatistics$IBranchGoalsSequenceOutputVariableFactory.getValue(SearchStatistics.java:517) ~[evosuite.jar:na] 
    at org.evosuite.statistics.SearchStatistics$IBranchGoalsSequenceOutputVariableFactory.getValue(SearchStatistics.java:509) ~[evosuite.jar:na] 
    at org.evosuite.statistics.SequenceOutputVariableFactory.update(SequenceOutputVariableFactory.java:39) ~[evosuite.jar:na] 
    at org.evosuite.statistics.SearchStatistics.currentIndividual(SearchStatistics.java:159) ~[evosuite.jar:na] 
    at org.evosuite.rmi.service.MasterNodeImpl.evosuite_collectStatistics(MasterNodeImpl.java:145) ~[evosuite.jar:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_45] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_45] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_45] 
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_45] 
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) ~[na:1.8.0_45] 
    at sun.rmi.transport.Transport$1.run(Transport.java:200) ~[na:1.8.0_45] 
    at sun.rmi.transport.Transport$1.run(Transport.java:197) ~[na:1.8.0_45] 
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_45] 
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196) ~[na:1.8.0_45] 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) ~[na:1.8.0_45] 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) ~[na:1.8.0_45] 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$241(TCPTransport.java:683) ~[na:1.8.0_45] 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler$$Lambda$8/1383432533.run(Unknown Source) ~[na:na] 
    at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_45] 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) ~[na:1.8.0_45] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45] 
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45] 
    at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276) ~[na:1.8.0_45] 
    at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253) ~[na:1.8.0_45] 
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:162) ~[na:1.8.0_45] 
    at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:194) ~[na:1.8.0_45] 
    at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:148) ~[na:1.8.0_45] 
    at com.sun.proxy.$Proxy9.evosuite_collectStatistics(Unknown Source) ~[na:na] 
    at org.evosuite.rmi.service.ClientNodeImpl.updateStatistics(ClientNodeImpl.java:219) ~[evosuite.jar:na] 
    at org.evosuite.statistics.StatisticsSender.sendIndividualToMaster(StatisticsSender.java:46) ~[evosuite.jar:na] 
    at org.evosuite.statistics.StatisticsSender.executedAndThenSendIndividualToMaster(StatisticsSender.java:76) ~[evosuite.jar:na] 
    at org.evosuite.TestSuiteGenerator.generateTests(TestSuiteGenerator.java:470) ~[evosuite.jar:na] 
    at org.evosuite.TestSuiteGenerator.generateTestSuite(TestSuiteGenerator.java:252) ~[evosuite.jar:na] 
    at org.evosuite.rmi.service.ClientNodeImpl$1.run(ClientNodeImpl.java:125) ~[evosuite.jar:na] 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_45] 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_45] 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_45] 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_45] 
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45] 

代码:

public final class B1b_Constants { 
    private B1b_Constants() { 
     throw new UnsupportedOperationException("Static class"); 
    } 

    public static final boolean CONST_BOOLEAN = true; 
    public static final byte CONST_BYTE = 123; 
    public static final short CONST_SHORT = 12345; 
    public static final int CONST_INT = 1234567890; 
    public static final long CONST_LONG = 123456789L; 
    public static final float CONST_FLOAT = 12345.67890f; 
    public static final double CONST_DOUBLE = 1.2345678e90; 
    public static final char CONST_CHAR = 'C'; 

    public static boolean constBoolean() { 
     return B1b_Constants.CONST_BOOLEAN; 
    } 

    public static byte constByte() { 
     return B1b_Constants.CONST_BYTE; 
    } 

    public static short constShort() { 
     return B1b_Constants.CONST_SHORT; 
    } 

    public static int constInt() { 
     return B1b_Constants.CONST_INT; 
    } 

    public static long constLong() { 
     return B1b_Constants.CONST_LONG; 
    } 

    public static float constFloat() { 
     return B1b_Constants.CONST_FLOAT; 
    } 

    public static double constDouble() { 
     return B1b_Constants.CONST_DOUBLE; 
    } 

    public static char constChar() { 
     return B1b_Constants.CONST_CHAR; 
    } 
} 
+0

我建议改为联系EvoSuite团队。图书馆内部的NPE通常意味着图书馆中存在一个错误。 EvoSuite正在积极开发中,因此很有可能会考虑您的案例。 –

回答

0

一个NPE通常是在工具的错误。但是,我无法在我的机器上重现您的问题(Mac 10.10)。请注意,EvoSuite目前是针对Java 7的。想知道您是否在这里遇到Java 8的一些副作用(例如处理RMI)......(或者它为Ubuntu构建的JVM)。

您可能会尝试与-Dnew_statistics=false一起运行,看看您是否仍然遇到同样的问题。

+0

是的,该工具中的错误是我的提示。不幸的是,我忘了强调,“通常”意味着有时候这个世代会成功退出,有时会停止在NPE中(对于同一个命令)。为了说清楚,我使用Oracle JVM。使用-Dnew_statistics = false参数我没有遇到这个问题,但是,我发现了另一个bug:使用JUNIT3失败,但使用JUNIT4它可以工作(命令&输出:http://pastebin.com/YePabD3r)。另一个问题:你打算在接下来的几个月内提供Java 8支持吗? – cseppento

相关问题