创建断言
Creating assertions
所以我想创建一个断言 class,就像 AssertJ 的工作方式一样。我在开始时遇到问题。
public class Assertion {
static object assertThis(Object o){}
static Integer assertThis(int i){}
static String assertThis(String s){}
static Object isNotNull(){}
}
我的问题是 JUNIT 如何接收特定的 object/string/int 并存储它?假设我传入一个 Assertion.assertThis("hello").isNotNull()
我应该得到一个字符串对象。我需要一个字段来存储目标文件吗?通过 assertThis 方法传递的不同对象如何改变它?
我不认为 JUnit 是这样工作的(但是 AssertJ does)。
但是,是的,您使用静态方法创建实例并保存值,然后针对该值执行断言。
对静态方法(也称为工厂方法)的新调用将创建不同的实例。
这是一个非常简单的例子:
class Assert {
// Thing we're going to evaluate
private String subject;
// Factory method. Creates an instance of `Assert` holding the value.
public static Assert assertThat(String actual) {
Assert a = new Assert();
a.subject = actual;
return a;
}
// Instance method to check if subject is not null
public void isNotNull() {
assert subject != null;
}
}
// Used somewhere else...
import static Assert.assertThat;
class Main {
public static void main( String ... args ) {
assertThat("hello").isNotNull();
}
}
所以我想创建一个断言 class,就像 AssertJ 的工作方式一样。我在开始时遇到问题。
public class Assertion {
static object assertThis(Object o){}
static Integer assertThis(int i){}
static String assertThis(String s){}
static Object isNotNull(){}
}
我的问题是 JUNIT 如何接收特定的 object/string/int 并存储它?假设我传入一个 Assertion.assertThis("hello").isNotNull()
我应该得到一个字符串对象。我需要一个字段来存储目标文件吗?通过 assertThis 方法传递的不同对象如何改变它?
我不认为 JUnit 是这样工作的(但是 AssertJ does)。
但是,是的,您使用静态方法创建实例并保存值,然后针对该值执行断言。
对静态方法(也称为工厂方法)的新调用将创建不同的实例。
这是一个非常简单的例子:
class Assert {
// Thing we're going to evaluate
private String subject;
// Factory method. Creates an instance of `Assert` holding the value.
public static Assert assertThat(String actual) {
Assert a = new Assert();
a.subject = actual;
return a;
}
// Instance method to check if subject is not null
public void isNotNull() {
assert subject != null;
}
}
// Used somewhere else...
import static Assert.assertThat;
class Main {
public static void main( String ... args ) {
assertThat("hello").isNotNull();
}
}