如何在EvoSuite测试中模拟接口?

时间:2019-08-09 14:18:04

标签: java unit-testing mockito evosuite

我有一个简单的玩具课,目的是研究EvoSuite如何自动进行单元测试。

该类如下:

package mylib;

public class ClassWithInterfaceField {
    private InterfaceExample example;

    private ClassWithInterfaceField(InterfaceExample example) {
        this.example = example;
    }

    public int getSwag() {
        return example.getValue(null, 20);
    }

    public int performSwagAndLog(int swag) {
        example.performSwag();
        System.out.println("hmmm");
        return swag + 1;
    }
}

其中InterfaceExample在单独的文件中定义如下:

package mylib;

public interface InterfaceExample {
    void performSwag();
    int getValue(InterfaceExample example, int flag);
}

EvoSuite似乎无法为ClassWithInterfaceField生成任何测试。

即使我在控制台参数中添加-Dp_functional_mocking=1.0 -Dp_reflection_on_private=1.0 -Dreflection_start_percent=1.0 -Dfunctional_mocking_percent=1.0,EvoSuite似乎也无法按预期模拟InterfaceExample,因为EvoSuite的输出似乎总是如下:

package mylib;

import org.junit.Test;
import static org.junit.Assert.*;
import org.evosuite.runtime.EvoRunner;
import org.evosuite.runtime.EvoRunnerParameters;
import org.junit.runner.RunWith;

@RunWith(EvoRunner.class) @EvoRunnerParameters(mockJVMNonDeterminism = true, useVFS = true, useVNET = true, resetStaticState = true, separateClassLoader = true, useJEE = true) 
public class ClassWithInterfaceField_ESTest extends ClassWithInterfaceField_ESTest_scaffolding {
  @Test
  public void notGeneratedAnyTest() {
    // EvoSuite did not generate any tests
  }
}

我已经在线阅读了EvoSuite能够使用Mockito模拟接口的功能。 EvoSuite支持模拟是真的吗?我需要怎么做才能为此类生成测试?

0 个答案:

没有答案