当前位置: 首页 > 工具软件 > Object Bot > 使用案例 >

java 管理测试数据,Object-Bot: Object Bot 是什么? Object Bot 是Java 的一个管理测试数据的程序库...

仲孙雅达
2023-12-01

Object Bot

Object bot is a library for setting up Java objects as test data, which is inspired by Factory Bot.

Latest Release

1.0.0

More details in Release Notes.

Object Bot in Your Build

To add a dependency on Object Bot using Maven, use the following:

com.github.dreamhead

bot-junit5

1.0.0

To add a dependency using Gradle:

dependencies {

testImplementation(

"com.github.dreamhead:bot-junit5:1.0.0",

)

}

Quick Start

You have a POJO as your test data

class Foo {

private String field1;

private String field2;

public Foo(String field1, String field2) {

this.field1 = field1;

this.field2 = field2;

}

public String getField1() {

return this.field1;

}

public String getField2() {

return this.field2;

}

}

And then you could initialize all your test POJOs in an initializer.

import com.github.dreamhead.bot.annotation.BotInitializer;

public class FooBotInitializer implements BotInitializer {

@Override

public void initializer(final ObjectBot bot) {

// Give a name to identify your Pojo.

bot.define("defaultFoo", new Foo("foo", "bar"));

}

}

Now you can use it in your test. Refer to the following Junit 5 example.

// Run BotExtension

@ExtendWith(BotExtension.class)

// All test POJOs are initialized with FooBotInitializer.

@BotWith(FooBotInitializer.class)

public class FooTest {

// Use the name to identify your defined Pojo.

// It will be injected for each test.

@Bot("defaultFoo")

private Foo foo;

@Test

public void should_get_foo() {

assertThat(foo.getField1(), is("foo"));

}

}

The initialized field can be customized. You can modify a specific field with new value.

@ExtendWith(BotExtension.class)

@BotWith(FooBotInitializer.class)

public class ModifiedFooTest {

@Bot(value = "defaultFoo")

// Customize field field2 with value blah

@StringField(name = "field2", value="blah")

private Foo foo;

@Test

public void should_get_foo() {

assertThat(foo.getField2(), is("blah"));

}

}

If the field customization only affects a single test, override API could be used.

@ExtendWith(BotExtension.class)

@BotWith(FooBotInitializer.class)

public class FooTest {

@Bot("defaultFoo")

private Foo foo;

@Test

public void should_get_foo() {

Foo newFoo = override(foo, field("field2").value("blah"));

assertThat(newFoo.getField2(), is("blah"));

}

}

 类似资料: