Я пытаюсь смоделировать логические схемы c с Java. Я хотел бы иметь возможность использовать тестовые данные, которые немного похожи на таблицу истинности, без единого утверждения для каждой возможной комбинации ввода и вывода.
Моей первой мыслью было использование параметризованного бегуна из junit - это позволяет мне сделать что-то вроде этого:
@RunWith(Parameterized.class)
public class AndGateTest {
@Parameterized.Parameters(name = "{index}: Input: a={0}, b={1}, q={2}")
public static Collection<Object[]> truthTable(){
Object[][] andGateTruthTable = {
{false, false, false},
{true, true, true},
{true, false, false},
{false, true, false}
};
return Arrays.asList(andGateTruthTable);
}
private final boolean a;
private final boolean b;
private final boolean q;
private AndGate and;
public AndGateTest(boolean a, boolean b, boolean q ) {
this.a = a;
this.b = b;
this.q = q;
}
@Before
public void setup() { and = new AndGate(); }
@Test
public void testWithTruthTable() { assertEquals( q, and.input(a, b)); }
Это прекрасно работает, но мне интересно, есть ли способ сделать Таблицу правды более читабельной? Например, используя Cucumber, я мог получить таблицу данных со списком карт. Я счастлив использовать это, так как я довольно хорошо знаком с корнишоном, но мне было интересно, какие еще могут быть подходы?