我使用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;
}
}