gpt4 book ai didi

java - 使用多个 if 语句进行 Junit 测试

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:32 25 4
gpt4 key购买 nike

嘿,我陷入了这个家庭作业的练习中。我发现有很多 if 语句很难。很高兴获得一些帮助。干杯。 junit 测试的想法是调用方法并测试变量。

package testing;

import java.util.Map.Entry;

public class HashMap<K,V> {
static final int MAXIMUM_CAPACITY = 1 << 10;
transient Entry<K,V>[] table;
int threshold;
final float loadFactor;

public HashMap(int initialCapacity, float loadFactor) {
if (initialCapacity < 0)
throw new IllegalArgumentException("Illegal initial capacity: " +
initialCapacity);
if (initialCapacity > MAXIMUM_CAPACITY)
initialCapacity = MAXIMUM_CAPACITY;
if (loadFactor <= 0 || Float.isNaN(loadFactor))
throw new IllegalArgumentException("Illegal load factor: " + loadFactor);

// Find a power of 2 >= initialCapacity
int capacity = 1;
while (capacity < initialCapacity)
capacity <<= 1;
this.loadFactor = loadFactor;
threshold = (int)(capacity * loadFactor);
table = new Entry[capacity];
}

public int getCapacity() {
return table.length;
}
}

最佳答案

嗯,在现实世界中,您宁愿以相反的方式工作:您会采用 TDD。含义:您考虑您的生产代码应该具有的(理想情况下很小的)功能。然后你为此编写一个测试,并检查测试是否失败。然后您实现该功能,现在测试应该通过。

“事后”编写测试通常没有什么帮助。但总的来说:没什么大不了的。您可以查看代码并观察正在执行的操作。然后编写测试来检查该行为。

喜欢:

@Test(expected=IllegalArgumentException.class)
public void testWithNegativeCapacity() {
new HashMap<String, String>(-1, 0.5);
}

首先,您编写测试来检查验证输入的代码是否按预期抛出。

然后你会继续,例如

@Test
public void testForExpectedCapacity() {
assertThat(new HashMap<String, String>(10, 0.5).getCapacity(), is(whatever));
}

地点:

  • assert这是您可以使用的众多“断言”之一
  • is() 是一个 hamcrest 匹配器,与assertThat 一起使用,可生成可读的测试代码
  • 无论都是您在使用 10 和 0.5 调用构造函数时期望的容量值(我懒得计算真正的预期结果)

最后:当然,您可以查看生产代码的实现来导出测试。但您还应该查看该代码的契约(Contract)。

例如它的文档:尝试理解代码应该做什么,并编写测试来验证这些声明“当你这样做时,代码会这样做”是否真的成立。

双方都很重要,只有共同努力才能获得完整的测试套件。您想要确保代码执行它应该执行的操作,并且您想要验证“它是如何完成的”是否正确!

关于java - 使用多个 if 语句进行 Junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56130734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com