sách gpt4 ai đã đi

java - 验证私有(private)构造函数未使用 JMockit 调用/调用

In lại 作者:行者123 更新时间:2023-11-29 05:40:43 27 4
mua khóa gpt4 Nike

我有以下类(class)。

public Task {

public static Task getInstance(String taskName) {
return new Task(taskName);
}

private Task(String taskName) {
this.taskName = taskName;
}
}

我正在使用 JMockit 测试 Task.getInstance()。在测试时,我需要验证是否确实调用了 private Task()。我之前使用了 Verifications block 来验证测试夹具对象上的方法执行,但这里我没有。

1 Câu trả lời

这是可以做到的,尽管它很可能Không nên在任何正确编写的测试中:

@Bài kiểm tra
public void badTestWhichVerifiesPrivateConstructorIsCalled()
{
new Expectations(Task.class) {{ // partially mocks `Task`
// Records an expectation on a private constructor:
newInstance(Task.class, "name");
}};

Task task = Task.getInstance("name");

assertNotNull(task);
}

@Bài kiểm tra
public void goodTestWhichVerifiesTheNameOfANewTask()
{
String taskName = "name";

Task task = Task.getInstance(taskName);

assertNotNull(task);
assertEquals(taskName, task.getName());
}

@Bài kiểm tra
public void goodTestWhichVerifiesANewTaskIsCreatedEverytime()
{
Task task1 = Task.getInstance("name1");
Task task2 = Task.getInstance("name2");

assertNotNull(task1);
assertNotNull(task2);
assertNotSame(task1, task2);
}

同样,通常应避免部分模拟和私有(private)方法/构造函数的模拟。

关于java - 验证私有(private)构造函数未使用 JMockit 调用/调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703232/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com