java - 为什么断言在 RUN 下会失败,而在 DEBUG 下不会失败?

标签 java unit-testing assertion

单元测试中的行为非常奇怪。该代码位于另一台计算机上,因此我将简写其主要方面。

问题是

  • 当我以 RUN 方式进行测试时,测试会检查两个对象的 10 个属性,但未能表明该对象包含 19 个属性。
  • 当我以 DEBUG 方式进行测试时,两个对象的测试均通过,每个对象都有 10 个属性。

这到底是怎么发生的?

    @Test
    public void testConverterTwoObjects(){
      InputStream inFile = this.getClass().getResourceAsStream(TEST_TWO_OBJECTS);

      try{
          List<MyObject> objs = getConvertedObjects(inFile);
          MyObject mob1 = objs.get(0);
          MyObject mob2 = objs.get(1);

          assertionCheck(mob1);
          assertionCheckTwo(mob2);
      } catch(Exception e){
        // logging
      } finally {
        try{
          inFile.close();
        } catch(IOException ioe){
          // logging
        }
      }
    }

    private void assertionCheck(MyObject t){
      assertNotNull(t);
      assertEquals(10, t.getPropertyCount());
      assertEquals("ALPHA", t.getType());
      ...
    }

    private void assertionCheckTwo(MyObject t){
      assertNotNull(t);
      assertEquals(10, t.getPropertyCount());
      assertEquals("BRAVO", t.getType());
      ...
    }

最佳答案

我在 PyCharm (Intellij IDEA for Python) 中遇到了类似的问题。经过几个小时的搜索,结果发现垃圾收集器在 Debug模式下的行为与在运行模式下的行为不同。

关于java - 为什么断言在 RUN 下会失败,而在 DEBUG 下不会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870965/

相关文章:

debugging - 如何在rust中编写 "non-assert"调试代码

azure - 为什么使用 -notMatch 条件验证参数时会满足此条件?

java - 如何在android中以Json格式存储日志数据?

java - 如何应用随机颜色?

php - Ruby/Rails 是否需要比 PHP 应用程序更多的单元测试?

unit-testing - Raku 模块的覆盖测试?

c# - 如何对具有多个子层的根 ViewModel 进行单元测试?

java - 当 setMaxFileSize() 和 setMaxDuration() 组合使用时 MediaRecorder 服务器崩溃

java - 找不到 spring-aspects-4 依赖项

javascript - 如何在 Typescript 中添加多个断言