EvoCrash uses a similar command line mechanism as EvoSuite. Therefore, to generate a crash reproducible test case, specific command line parameters must be set in advance. The following is the essential ones to set for every run. However, depending on the crash case to cover, there may be other parameters necessary to adjust. Therefore, to replicate the experimental cases, please refer to the JUnit tests for each case which are located in the evocrash-master project!

  1. The path to the stack trace .log file (e.g., -DEXP="resources//logs//LOG//LOG-40212//LOG-40212.log").
  2. The EvoCrash target class (e.g., "-class", "org.apache.log4j.LogManager")
  3. Project dependencies (e.g., "-projectCP", "Log4j-1.2.14//jms-1.1.jar" +";"+)

    Please note the following:

    1. Make sure to include all the dependencies of a target project so that lack of a dependency would not prevent EvoCrash from successful test generation.
    2. EvoCrash depends on EvoSuite, which in turn depends on Apache-Log4j. Thus, to distinguish the target project Log4j from the dependency of EvoSuite, we renamed the project to log4jb and adapted the crash stack traces accordingly. To try EvoCrash on the LOG cases, please do as suggested above: 1) rebuild the project with a distinguished name from “log4j”, and 2) adapt the target crash stack trace accordingly.
  4. The target exception to be thrown (e.g., "-Dtarget_exception_crash=java.lang.NullPointerException")
  5. Flag for generating individual tests (e.g., "-generateTests")
  6. The test generation criterion (e.g., "-Dcriterion=CRASH")
  7. The EvoCrash target frame level (e.g., "-Dtarget_frame=1")
  8. Sandbox flag (e.g., "-Dsandbox=FALSE")
  9. Headless Chicken test flag (e.g., "-Dheadless_chicken_test=FALSE")
  10. Minimization flag (e.g., "-Dminimize=TRUE")
  11. The number of generated tests (e.g., "-Drandom_tests=1")