Skip to content

Unexpected tests for some inherited methods on enums #457

Description

@sofurihafe

Description

Generated tests for enum contain methods testing valueOf

To Reproduce

  1. Run Contest Estimator with method com.google.common.base.CaseFormat.* and 300s time limit.

Actual behavior

Generated tests contain the following:

    @Test
    //@org.junit.jupiter.api.DisplayName("valueOf: arg_0 = blank string -> throw IllegalArgumentException")
    public void testValueOfThrowsIAEWithBlankString() {
        /* This test fails because executable under testing com.google.common.base.CaseFormat.valueOf
        produces Runtime exception java.lang.IllegalArgumentException: No enum constant com.google.common.base.CaseFormat.    */
        CaseFormat.valueOf("   ");
    }

    @Test
    //@org.junit.jupiter.api.DisplayName("valueOf: arg_0 has special characters -> throw IllegalArgumentException")
    public void testValueOfThrowsIAEWithBlankString1() {
        /* This test fails because executable under testing com.google.common.base.CaseFormat.valueOf
        produces Runtime exception java.lang.IllegalArgumentException: No enum constant com.google.common.base.CaseFormat.
	
 */
        CaseFormat.valueOf("\n\t\r");
    }

Activity

  1. EgorkaKulikov commented on Jul 8, 2022

    @EgorkaKulikov
    Collaborator

    This behaviour can also be reproduced on equals and hashCode methods.

  2. changed the title [-]Unexpected tests for valueOf on enums[/-] [+]Unexpected tests for some inherited methods on enums[/+] on Jul 8, 2022
  3. dtim commented on Jul 8, 2022

    @dtim
    Collaborator

    It seems that tests for Enum::valueOf(String) and Enum::values() are correct by themselves: these methods are not inherited but generated by the compiler as a part of a specific enum class. At the same time they are redundant, as they test the generated code on that users do not have any control.

  4. dtim commented on Jul 12, 2022

    @dtim
    Collaborator

    My opinion: we should generate tests for overridden hashCode, equals, toString etc (including anonymous classes), but not to generate tests for inherited methods where no user-defined implementation is present in the class under test.

    TODO: check if tests are generated for inherited methods without user-defined implementation.

  5. assigned and unassigned on Jul 12, 2022
  6. Repository owner moved this from Todo to Done in UTBot Javaon Jul 18, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

comp-symbolic-engineIssue is related to the symbolic execution enginectg-bugIssue is a bug

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions