为什么断言在RUN下失败,但在DEBUG下失败?

时间:2018-12-20 14:50:19

标签: 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());
      ...
    }

1 个答案:

答案 0 :(得分:0)

我在PyCharm(Python的Intellij IDEA)中遇到了类似的问题。经过几个小时的搜索,事实证明,垃圾收集器的行为在调试模式下与在运行模式下不同。