SWTBot を使用して Eclipse ウィザードの説明テキストを取得する方法は? wizard.shell.gettext()
メソッドはタイトルを示しますが、説明を取得する方法が見つかりませんでした。説明とウィザード ページに表示されるエラー メッセージを確認するために必要です。
質問する
801 次
3 に答える
2
回避策として、このコードを使用しました
public void verifyWizardMessage(String message) throws AssertionError{
try{
bot.text(" "+message);
}catch(WidgetNotFoundException e){
throw (new AssertionError("no matching message found"));
}
}
ここで、bot はメソッドで使用できる SWTBot インスタンスです。ウィザードのメッセージは、説明フィールドの先頭にスペースを自動的に追加するので、" "+message
. それが役に立てば幸い
于 2012-09-07T05:54:38.980 に答える
1
私たちの Eclipse プラグインをテストするために、私が一緒に働いていたチームは、ウィザード、ダイアログなどを表すカスタム DSL を SWTBot の上に開発しました。これは、私たちの場合にうまく機能するコードスニペットです (これは Eclipse のバージョンに依存する可能性があることに注意してください。Eclipse 3.6 および 4.2 では問題ないようです)。
class Foo {
/**
* The shell of your dialog/wizard
*/
private SWTBotShell shell;
protected SWTBotShell getShell() {
return shell;
}
protected <T extends Widget> T getTopLevelCompositeChild(final Class<T> clazz, final int index) {
return UIThreadRunnable.syncExec(shell.display, new Result<T>() {
@SuppressWarnings("unchecked")
public T run() {
Shell widget = getShell().widget;
if (!widget.isDisposed()) {
for (Control control : widget.getChildren()) {
if (control instanceof Composite) {
Composite composite = (Composite) control;
int counter = 0;
for (Control child : composite.getChildren()) {
if (clazz.isInstance(child)) {
if (counter == index) {
return (T) child;
}
++counter;
}
}
}
}
}
return null;
}
});
}
/**
* Returns the wizard's description or message displayed in its title dialog
* area.
*
* A wizard's description or message is stored in the very first Text widget
* (cf. <tt>TitleAreaDialog.messageLabel</tt> initialization in
* <tt>org.eclipse.jface.dialogs.TitleAreaDialog.createTitleArea(Composite)</tt>
* ).
*
*/
public String getDescription() {
final Text text = getTopLevelCompositeChild(Text.class, 0);
return UIThreadRunnable.syncExec(getShell().display, new Result<String>() {
public String run() {
if (text != null && !text.isDisposed()) {
return text.getText();
}
return null;
}
});
}
}
于 2014-08-12T09:41:39.970 に答える
0
WizardNewProjectCreationPage の場合、次を使用します。
bot.textWithLabel("Create Project"); // This title set by page.setTitle("Create Project");
bot.text("Description."); // this is description set by page.setDescription("Description.");
于 2019-08-15T18:10:31.693 に答える