【问题标题】:What Is A Unit Testing Framework, And How Can I Use It In Java [duplicate]什么是单元测试框架,以及如何在 Java 中使用它 [重复]
【发布时间】:2020-05-12 23:38:18
【问题描述】:

我看到很多新程序员,特别是 Java 程序员,他们在那里做类似这样的测试:

System.out.println(myMethod(someValue));
System.out.println(expectedValue == myMethod(someValue));

但是,有一种称为单元测试框架的东西可以帮助测试您的代码。那么,什么是单元测试框架,为什么我要使用它来帮助简化测试?以及如何在 Java 中使用它?

【问题讨论】:

    标签: java testing junit


    【解决方案1】:

    什么是单元测试框架?

    我将把它分成两部分。首先,您通常会做什么测试,然后是单元测试框架如何提供帮助。

    你通常会做什么

    首先,我要谈谈新手如何处理测试。假设您编写了一个 AVL 树实现,并且您想检查它是否有效。 AVL 树需要具备很多东西。最明显的就是一个节点左边的所有节点都比那个节点小,然后那个节点右边的所有节点都比那个节点大。所以你很快写了一个方法来检查这个。然后在您的测试仪中:

    System.out.println(tree.isValidBST());
    

    但是你发现这是打印false。它哪里出错了?你搜索你的isValidBST() 方法。看起来不错。然后你看看你之前做过的操作。

    tree.insert(5);
    tree.insert(4);
    tree.insert(7);
    
    tree.delete(4);
    

    所以你首先去insert()方法,调试一切。您会看到它工作正常。然后你转到delete() 方法,然后你就发现了你的bug。恭喜!你已经完成了第一部分。现在你需要检查树是否总是平衡的。所以,你添加这个检查:

    System.out.println(tree.isBalanced());
    

    这又是行不通的。然后你回到你的insert() 方法,发现它没有正确地重新平衡树。您之前没有发现这一点,因为最初您不需要重新平衡树。这似乎是一个乏味的过程。必须有更简单的方法。幸运的是,有!

    JUnit 如何提供帮助

    JUnit 是一个单元测试框架的 Java 实现。

    简单地说,单元测试框架允许您测试代码的各个部分。如果一件事出错了,如果你正确地编写了测试,你可以很容易地找到出错的部分,并轻松调试它。以AVLTree 为例,您可以使用JUnit 将其简化为。

    AVLTree tree;
    
    @Before
    public void setup() {
        tree = new AVLTree();
    }
    
    // Add tests to check if insert and delete are working
    
    @Test
    public void balanceTest() {
        int[] values = new int[1000];
        // initialize the values.
        for(int num : values) {
            tree.insert(num);
            assertTrue(tree.isBalanced());
        }
    }
    
    // Same for the valid bst check
    

    现在,当您遇到错误时,比如说高度,您可以准确找出导致错误的原因。然后就可以轻松调试了。

    语法

    JUnit 的语法非常简单。如果您使用 @Before 注释,它将在每次测试之前执行该代码。您应该使用它来重置您正在处理的任何内容。在此示例中,我使用它来重置 AVLTree 值。然后,使用 @Test 注释进行测试。使用某些特殊方法来检查某些东西是否正常工作。这些方法是assert 方法。它们有很多,比如assertEquals(expectedValue, actualValue)assertTrue(booleanThatShouldBeTrue)。每次测试后,如果需要,可以添加带有 @After 注释的方法。这通常用于拆卸和工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-20
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多