使用JUnit测试Tapestry页面和组件

pon*_*zao 6 java testing junit tapestry

我通常尝试最小化使用Selenium进行的测试,并最大化使用普通的旧式后端测试(JUnit,模拟)。使用Tapestry,由于回调函数会产生“魔力”,我发现用后一种方法很难测试页面和组件。

您能解决这个问题吗?还是只在整个Web层(页面,组件)中使用Selenium?

Tim*_*per 3

根据 Tapestry 文档,使用 PageTester 是对页面和组件进行单元测试的适当方法: https: //tapestry.apache.org/unit-testing-pages-or-components.html

但这似乎与 HtmlUnit 风格的 Web 测试类似,因为交互是通过类似 Web 浏览器的界面而不是通过页面或组件的界面进行的。

编辑

我刚刚尝试了一个简单的页面单元测试,效果很好:

public class FooPageTest extends AbstractServiceTest{

    @Autobuild
    @Inject
    private FooPage fooPage;

    @Test
    public void setupRender(){
        fooPage.setupRender();
    }

}
Run Code Online (Sandbox Code Playgroud)

AbstractServiceTest 提供了一个测试运行器,它为单元测试类提供 Tapestry 依赖注入。通过 Autobuild,您可以满足 FooPage 的 @Inject 依赖关系,对于组件注入和 @Property 注释元素,您将需要找出其他东西。