JUnit我应该使用什么断言
我想寻求帮助和建议,在我的案例中什么是正确的方法(可能很简单,但我只是从JUnit开始)。这是我代码的一部分JUnit我应该使用什么断言,junit,assert,assertion,Junit,Assert,Assertion,我想寻求帮助和建议,在我的案例中什么是正确的方法(可能很简单,但我只是从JUnit开始)。这是我代码的一部分 public boolean arrayListEmpty() { if(numericalSequence.isEmpty() == true) return true; else return false; } 这是一个来自模型的公共方法,我想我应该测试它,如果我的numericalse
public boolean arrayListEmpty()
{
if(numericalSequence.isEmpty() == true)
return true;
else
return false;
}
这是一个来自模型的公共方法,我想我应该测试它,如果我的numericalsequence是空的,正如您所看到的,它将返回true。我不能直接调用numericalSequence.isEmpty(在我需要它的控制器中)检查它,因为它是私有的。
所以最明显的事情就是检查
assertEquals(true, test.arrayListEmpty());
所以我的问题是关于建议我应该使用什么其他断言/我应该预测哪些案例会出现。在测试方法中,我是否应该用一些值填充numericalSequence并断言它?(对我来说,这并不是必需的,因为任何插入序列的值都=notnull,但可能不是那么容易)首先,欢迎使用堆栈溢出 看看你的问题,听起来你是单元测试新手(如果我错了,请纠正我)。因此,我将把我的答案分成两部分;(1) 回答你的问题,(2)给出如何编写好的测试和可测试类的一般指导 1。回答您的问题 您可以在这里想到更多的用例:
numericalSequence
为null
,会发生什么情况numericalSequence
有一个元素会怎么样numericalSequence
有一个空元素怎么办class MyClass {
// NOTE: This is not `final`
private List<Integer> numericalSequence;
public MyClass() {
this.numericalSequence = new ArrayList<>();
}
public void doSomething(Integer x) {
if (x < 0) {
numericalSequence = new ArrayList<>();
} else {
numericalSequence.add(2 * x);
}
}
public boolean arrayListEmpty() {
// NOTE: Your sample code can be reduced to this one-liner
return numericalSequence.isEmpty();
}
}
关于上述结构,需要注意以下几点:
doSomething()
方法不接受Integer
值,但接受确保x
永远不为null
(Java数值基元类型不能为null
)的int
值。这也意味着,numericalSequence
不能通过doSomething()
包含空值numericalSequence
可以从此类外部初始化,因此arrayListEmpty()
方法确保检查numericalSequence
是否为null
是否为空@Test
public void arrayListEmpty_WhenListIsNull() {
MyClass test = MyClass(null);
assertTrue(test.arrayListEmpty());
}
@Test
public void arrayListEmpty_WhenListIsEmpty() {
MyClass test = MyClass();
assertTrue(test.arrayListEmpty());
}
@Test
public void arrayListEmpty_WhenListHasOnlyOneNonNullElement() {
List<Integer> sequence = new ArrayList<>();
sequence.add(0);
MyClass test = new MyClass(sequence);
assertFalse(test.arrayListEmpty());
}
@Test
public void arrayListEmpty_WhenListHasOnlyOneNullElement() {
List<Integer> sequence = new ArrayList<>();
sequence.add(null);
MyClass test = new MyClass(sequence);
assertFalse(test.arrayListEmpty());
}
我的意图是展示两件事:
@Test
public void arrayListEmpty_WhenListIsNull() {
MyClass test = MyClass(null);
assertTrue(test.arrayListEmpty());
}
@Test
public void arrayListEmpty_WhenListIsEmpty() {
MyClass test = MyClass();
assertTrue(test.arrayListEmpty());
}
@Test
public void arrayListEmpty_WhenListHasOnlyOneNonNullElement() {
List<Integer> sequence = new ArrayList<>();
sequence.add(0);
MyClass test = new MyClass(sequence);
assertFalse(test.arrayListEmpty());
}
@Test
public void arrayListEmpty_WhenListHasOnlyOneNullElement() {
List<Integer> sequence = new ArrayList<>();
sequence.add(null);
MyClass test = new MyClass(sequence);
assertFalse(test.arrayListEmpty());
}
@Test
public void doSomething_WhenInputLessThanZero() {
List<Integer> sequence = new ArrayList<>();
sequence.add(0);
MyClass test = new MyClass(sequence);
test.doSomething(-1);
assertTrue(test.arrayListEmpty());
}