Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何对构建复杂结构进行单元测试_Unit Testing_Data Structures - Fatal编程技术网

Unit testing 如何对构建复杂结构进行单元测试

Unit testing 如何对构建复杂结构进行单元测试,unit-testing,data-structures,Unit Testing,Data Structures,我得到了一个基于以下两个类的树状结构: public class SchemaNode { private SchemaNode parentNode; private String elementName; private List<Edge> edges; /* constructors, getters/setters, etc. omitted to improve brevity */ } public class Edge {

我得到了一个基于以下两个类的树状结构:

public class SchemaNode 
{
    private SchemaNode parentNode;
    private String elementName;
    private List<Edge> edges;

    /* constructors, getters/setters, etc. omitted to improve brevity */
}

public class Edge 
{
    private int minCardinality;
    private int maxCardinality;
    private SchemaNode targetNode;

    /* constructors, getters/setters, etc. omitted to improve brevity */
}
现在我想编写一些单元测试,以确保构建器正常工作。我已创建测试的以下开始:

@Test
public void buildsABasicSchemaTree() 
{
    SchemaNode tree = 
        new SchemaTreeBuilder("is")
            .addEdge(1, 1, "people")
                .addEdge(0, 100, "person")
                    .addEdge(1, 1, "id")
                .up()
                    .addEdge(1, 1, "name")
                .up()
            .up()
        .up()
            .addEdge(1, 1, "courses")
                .addEdge(1, 10, "course")
                    .addEdge(1, 1, "id")
                .up()
                    .addEdge(1, 1, "teacher_id")
                .up()
                    .addEdge(1, 1, "students")
                        .addEdge(1, 30, "student_id")
        .getResult();

        ...
}
但我想知道,表达assert语句以确保正确构建树的最佳方式是什么。


关于如何改进代码的任何其他建议(例如,与问题无关)也将不胜感激。请将它们保留在问题的注释中。

您对该结构有任何操作吗?根据操作的属性测试事物是很常见的。如果有将树展平为列表的函数和计算树中节点数的函数,则可以检查列表中的元素数是否与树中的节点数相同。如果您有办法在树中查找特定元素,请确保您将该元素取回

如果您在树上有任何其他函数操作,请尝试提出它们应该满足的“定律”,并测试这些定律


测试的目的不是排除任何错误的可能性;测试的目的是从足够多的不同角度验证完整性,以避免出现错误。

您对结构有任何操作吗?根据操作的属性测试事物是很常见的。如果有将树展平为列表的函数和计算树中节点数的函数,则可以检查列表中的元素数是否与树中的节点数相同。如果您有办法在树中查找特定元素,请确保您将该元素取回

如果您在树上有任何其他函数操作,请尝试提出它们应该满足的“定律”,并测试这些定律

测试的目的不是排除任何错误的可能性;测试的目的是在不太可能出现错误的情况下,从足够多的角度验证完整性

@Test
public void buildsABasicSchemaTree() 
{
    SchemaNode tree = 
        new SchemaTreeBuilder("is")
            .addEdge(1, 1, "people")
                .addEdge(0, 100, "person")
                    .addEdge(1, 1, "id")
                .up()
                    .addEdge(1, 1, "name")
                .up()
            .up()
        .up()
            .addEdge(1, 1, "courses")
                .addEdge(1, 10, "course")
                    .addEdge(1, 1, "id")
                .up()
                    .addEdge(1, 1, "teacher_id")
                .up()
                    .addEdge(1, 1, "students")
                        .addEdge(1, 30, "student_id")
        .getResult();

        ...
}