Я хочу сделать обычное тестирование пользовательского интерфейса (т. Е. Не используя SWTBot или другие рамки пользовательского интерфейса) содержимого NatTable.JUnit-тестирование NatTable
Мой подход заключается в создании оболочки, добавьте мой обычай NatTable
, а затем получить доступ к ячейке и проверить его содержимое (значение данных конфигурации этикетки и т.д.):
// Note: this is Xtend code
@Before
def void setup()
{
shell = new Shell(Display.getCurrent)
shell.layout = new FillLayout
parent = new Composite(shell, SWT.NONE)
parent.layout = new GridLayout
fixture = new MyNatTableViewer(parent) // this is my custom nattable impl under test
shell.pack
shell.visible = true
}
@Test
def void testLabel()
{
assertCellLabel(2, 2, "test-label");
}
def assertCellLabel(int row, int col, String expected)
{
val labels = parameterTable.getCellByPosition(col, row)?.configLabels
assertThat(labels).describedAs("Labels for row " + row + " col " + col).isNotNull
assertThat(labels.labels).describedAs("Labels for row " + row + " col " + col).contains(expected)
}
Чтобы проверить мои другие компоненты, это было достаточно просто создать оболочку и родительский состав; упаковка и установка видимых не требовались для моих тестов. Тем не менее, с NatTable, getCellByPosition()
возвращает null
, если ячейка не видна - поэтому я добавил код для упаковки и установил видимость оболочки. Это работает для небольших таблиц (с двумя строками и несколькими столбцами).
К сожалению, это не работает для больших столов. Я подозреваю, что это связано с тем, что слой видового экрана не создает ячейки, которые не находятся в видимой области (которая, я знаю, сила NatTable), что она создает только требуемые структуры по требованию). Это, конечно, желательно для нормального поведения во время работы.
Но есть ли (более) способ получить ячейку гарантированным способом (другими словами, могу ли я заставить NatTable/ViewportLayer считать, что ячейка видна, поэтому я не получаю null
, пока ячейка существует контент?)
Я мог бы, конечно, проверить свои аккумуляторы ярлыков, поставщиков данных и т. д. напрямую, но я хотел подойти к этому больше с точки зрения черного ящика здесь.
У меня нет ответа на ваш вопрос, но обычный совет заключается в том, чтобы держать верхний слой View/UI как можно более тонким и глупым и проверять все остальное. В вашем случае это действительно означает протестировать ваши отдельные компоненты NatTable (Аккумуляторы, Провайдеры, Обработчики событий) и доверять NatTable, чтобы отображать его правильно. – jhyot