junit 4.13中是否存在可以产生某些副作用的错误?

时间:2019-06-22 14:23:09

标签: java junit4

我使用Java核心8,并且使用JUnit 4.13进行了一次类测试。 在我的代码的一种方法中,语句“ code.hashCode();”更改我的测试结果。

我不明白,因为我没有在代码对象的类中覆盖hashCode方法。

当我删除这两个语句时,测试“ test_generate_properly”失败了,另一个成功了。

我的测试操作了文件夹,所以我知道这可能是副作用, 但我不明白为什么code.hashCode()语句会更改结果

以下是我的单门考试 以及“代码”类(“代码”变量的类型)。

谢谢您的回答

我已经研究了hashCode方法的副作用,并多次运行类测试。

package test.code.generation.v1_2;

import org.junit.Test;
import com.code.generation.v1_2.util.for_test.ICodesComputer;
import com.code.generation.v1_2.util.for_test.organization.BaseTestFolderOrganization;
import com.code.generation.v1_2.util.for_test.results.compiled.ICompiledResult;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

public class CodeBaseTest {
    private ICodesComputer codeComputer;

    public CodeBaseTest() {
        codeComputer = ICodesComputer.instance();
    }

    @Test
    public void test_all_failed_codes_failed() throws IOException {
        // use codeComputer for compiling programs in a base of test and 
        // compare  the results
    }

    @Test
    public void test_generate_properly() throws IOException, InterruptedException {
        // use codeComputer for compiling programs in a base of test and compare  the results
    }
}



package com.code.generation.v1_2.elements.scope;

import com.generated.GrammarParser;

public class Code {
    private String name;
    private GrammarParser.ProgContext progContext;

    public Code(String name, GrammarParser.ProgContext progContext) {
        this.name = name;
        this.progContext = progContext;
    }

    public String getName() {
        return name;
    }

    public GrammarParser.ProgContext getProgContext() {
        return progContext;
    }
}

0 个答案:

没有答案