gpt4 book ai didi

java - 模型类的 Junit 测试

转载 作者:行者123 更新时间:2023-12-01 09:15:01 25 4
gpt4 key购买 nike

这个问题是关于最佳实践,而不是任何问题或问题。我在下面有一个我正在尝试测试的服务方法。 myDAO 是 DAO 类,将被注入(inject)并具有所有数据库调用代码。

public List<MyObject> getMyObject(String inputParameter){
List<MyObject> objectList = myDAO.getObjectList(inputParameter);
return objectList
}

我使用 mockito 的 Junit 测试用例是
@RunWith(MockitoJUnitRunner.class)
public class MyClassTest{
@InjectMocks
MyClass myClass;

@Mock
MyDAO myDAO;

private MyObject myObj;
private List<MyObject> objList;

@Before
public void setUp() throws Exception {
myObj = new MyObject();
myObj.setQuantity(10);
//I am calling all setter method to prepare myObj here
objList = new ArrayList<MyObject>();
objList.add(myObj);

when(myDAO.getObjectList(any(InputParameter.class))
.thenReturn(objList);
}


@Test
public void testGetMyObject(){

List<MyObject> result = myClass.getMybject(null);
assertThat(" Quantity should return 10", result.getQuantity(), is(10));
// and all asserts....
}

一切都很好并且工作正常。我的主要问题是 MyObject 是一个带有 200 个参数的模态类。

现在为了代码覆盖率,我必须在准备对象时调用 200 个 setter 方法,并为 junit 测试断言 200 个 getter 方法。我认为这不是一个好主意。什么是更好的实践以及如何在单元测试代码覆盖率上覆盖这种模式类。

最佳答案

关于编写单元测试用例的最佳实践一直存在巨大的争论。所以对于这种问题,不会有明确的答案。对我来说,仅仅为了提高代码覆盖率而为 getter 和 setter 编写测试用例是愚蠢的。但有时您的选择和偏好并不重要。

尽管您的代码需要重构,但您可以使用一些 API 来简化您的工作。 SmartUnit 就是其中之一,您可以使用它来测试您的 POJO。这些 API 允许您只编写几行代码,并在幕后覆盖您所有的 getter/setter 代码覆盖范围。

关于java - 模型类的 Junit 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46776945/

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