鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

普通项目示例

本章节基于普通项目提供对应的自动生成UT测试用例的示例代码,仅供参考。

需要生成测试用例的代码(Java代码):

public class Zoo
{
    private Tiger tiger;//Tiger是一个接口,有多个实现。
    private Monkey monkey;//Monkey是一个接口,有多个实现。

    public String toString()
    {
        return tiger.getColor() + "\n" + monkey.getColor();
    }
}

//Tiger接口
public interface Tiger {
    String getColor();
}

//Tiger的实现
public class BlackTiger implements Tiger{
    @Override
    public String getColor() {
        return "black";
    }
}

//Tiger的实现
public class WhiteTiger implements Tiger{
    @Override
    public  String getColor(){
        return "white";
    }
}

//Monkey的接口
public interface Monkey {
    String getColor();
}

//Monkey的实现
public class BlackMonkey implements Monkey{
    @Override
    public String getColor() {
        return "black";
    }
}

//Monkey的实现
public class WhiteMonkey implements Monkey{
    @Override
    public  String getColor(){
        return "white";
    }
}

使用不同的Mocking strategy生成的的UT测试用例:

//Mocking strategy为Do not mock生成的UT测试用例
public final class ZooTest {
    ///region Test suites for executable com.ruoyi.web.controller.common.Zoo.toString
    ///region FUZZER: SUCCESSFUL EXECUTIONS for method toString()
    /**
     * @utbot.classUnderTest {@link Zoo}
     * @utbot.methodUnderTest {@link Zoo#toString()}
     */
    @UTgen("toString()")
    @Test
    @DisplayName("toString: ")
    public void testToString() throws Exception {
        Zoo zoo = ((Zoo) createInstance("com.ruoyi.web.controller.common.Zoo"));
        BlackTiger tiger = new BlackTiger();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "tiger", tiger);
        BlackMonkey monkey = new BlackMonkey();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "monkey", monkey);
        String actual = zoo.toString();
        String expected = "black\nblack";
        assertEquals(expected, actual);
    }
    /**
     * @utbot.classUnderTest {@link Zoo}
     * @utbot.methodUnderTest {@link Zoo#toString()}
     */
    @UTgen("toString()")
    @Test
    @DisplayName("toString: ")
    public void testToString1() throws Exception {
        Zoo zoo = ((Zoo) createInstance("com.ruoyi.web.controller.common.Zoo"));
        BlackTiger tiger = new BlackTiger();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "tiger", tiger);
        WhiteMonkey monkey = new WhiteMonkey();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "monkey", monkey);
        String actual = zoo.toString();
        String expected = "black\nwhite";
        assertEquals(expected, actual);
    }
    /**
     * @utbot.classUnderTest {@link Zoo}
     * @utbot.methodUnderTest {@link Zoo#toString()}
     */
    @UTgen("toString()")
    @Test
    @DisplayName("toString: ")
    public void testToString2() throws Exception {
        Zoo zoo = ((Zoo) createInstance("com.ruoyi.web.controller.common.Zoo"));
        WhiteTiger tiger = new WhiteTiger();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "tiger", tiger);
        WhiteMonkey monkey = new WhiteMonkey();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "monkey", monkey);
        String actual = zoo.toString();
        String expected = "white\nwhite";
        assertEquals(expected, actual);
    }
    /**
     * @utbot.classUnderTest {@link Zoo}
     * @utbot.methodUnderTest {@link Zoo#toString()}
     */
    @UTgen("toString()")
    @Test
    @DisplayName("toString: ")
    public void testToString3() throws Exception {
        Zoo zoo = ((Zoo) createInstance("com.ruoyi.web.controller.common.Zoo"));
        WhiteTiger tiger = new WhiteTiger();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "tiger", tiger);
        BlackMonkey monkey = new BlackMonkey();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "monkey", monkey);
        String actual = zoo.toString();
        String expected = "white\nblack";
        assertEquals(expected, actual);
    }
    ///endregion
    ///region FUZZER: TIMEOUTS for method toString()
    /**
     * @utbot.classUnderTest {@link Zoo}
     * @utbot.methodUnderTest {@link Zoo#toString()}
     */
    @UTgen("toString()")
    @Test
    @DisplayName("toString: ")
    @Timeout(value = 1000L, unit = TimeUnit.MILLISECONDS)
    public void testToString4() throws Exception {
        Zoo zoo = ((Zoo) createInstance("com.ruoyi.web.controller.common.Zoo"));
        WhiteTiger tiger = new WhiteTiger();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "tiger", tiger);
        WhiteMonkey monkey = new WhiteMonkey();
        setField(zoo, "com.ruoyi.web.controller.common.Zoo", "monkey", monkey);
        /* This execution may take longer than the 1000 ms timeout
         and therefore fail due to exceeding the timeout. */
        assertTimeoutPreemptively(Duration.ofMillis(1000L), () -> zoo.toString());
    }
    ///endregion
    ///endregion
}
//Mocking strategy为Auto mock、Mock outside the class生成的UT测试用例
public final class ZooTest {
    @InjectMocks
    private Zoo zoo;
    @Mock
    private Tiger tigerMock;
    @Mock
    private Monkey monkeyMock;
    private AutoCloseable mockitoCloseable;
    ///region Test suites for executable com.ruoyi.web.controller.common.Zoo.toString
    ///region SYMBOLIC EXECUTION: SUCCESSFUL EXECUTIONS for method toString()
    /**
     * @utbot.classUnderTest {@link Zoo}
     * @utbot.methodUnderTest {@link Zoo#toString()}
     * @utbot.invokes {@link Tiger#getColor()}
     * @utbot.invokes {@link Monkey#getColor()}
     * @utbot.returnsFrom {@code return tiger.getColor() + "\n" + monkey.getColor();}
     */
    @UTgen("toString()")
    @Test
    @DisplayName("toString: TigerGetColor -> return tiger.getColor() + \"\\n\" + monkey.getColor()")
    public void testToString_MonkeyGetColor() {
        (when(tigerMock.getColor())).thenReturn(((String) null));
        (when(monkeyMock.getColor())).thenReturn(((String) null));
        String actual = zoo.toString();
        String expected = "null\nnull";
        assertEquals(expected, actual);
    }
    ///endregion
    /// endregion
    @BeforeEach
    public void setUp() {
        mockitoCloseable = openMocks(this);
    }
    @AfterEach
    public void tearDown() throws Exception {
        mockitoCloseable.close();
    }
}