这肯定需要一些高级 Java,但是在构建良好的健壮模型时,测试,尤其是单元测试经常被忽视。我希望这个简单的示例足以让您(以及许多其他建模者)继续前进。
对于 Junit 测试,我们使用了两个库,您可以将它们作为依赖项添加到您的模型中。
现在您需要在仿真模型中测试两种主要类型的逻辑。
- Java 类中的函数
- 模型执行
类型 1:假设我有一个非常简单的 Java 类
public class MyClass {
public MyClass() {
}
public boolean getResult() {
return true;
}
}
我想测试getResult()函数
我可以简单地创建一个新类并创建一个我用 @Test 修饰符注释的函数,然后还可以使用 assertEquals() 方法,这是 junit 测试中的标准方法
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class MyTestClass{
@Test
public void testMyClassFunction1() {
boolean result = new MyClass().getResult();
assertEquals("The value of the test class 1", result, true);
}
现在是 AnyLogic 特定的实现(还有其他方法可以做到这一点,但这是最简单/最有用的,稍后您会看到)
您需要创建一个自定义实验
现在,如果您从“运行模型”按钮运行它,您将获得此输出
SUCCESS
Run: 1
Failed: 0
您显然可以根据自己的喜好更新和更改输出
类型 2:假设我们有这个非常简单的模型
而函数getResult() 只返回一个int 2。
现在我们需要创建另一个自定义实验来运行这个模型
然后我们可以编写一个测试来运行这个自定义实验并检查结果
只需将以下内容添加到您的MyTestClass
@Test
public void testMyClassFunction2() {
int result = new SingleRun(null).runExperiment();
assertEquals("Value of a single run", result, 2);
}
现在,如果您运行 RunAllTests 客户实验,它将为您提供此输出
SUCCESS
Run: 2
Failed: 0
这只是一个开始,你可以阅读大量关于使用 junit 来发挥你的优势