在 GWTTestCase 中运行当前的 Junit 测试

发布于 2024-10-17 01:14:11 字数 208 浏览 2 评论 0原文

我有一个在一个类上运行的 JUnit 测试,但我最近为 GWT 编写了一个模拟版本。由于规范相同,我想使用相同的测试用例,但我希望它在 GWT 环境中运行,这通常通过扩展 GWTTestCase 来完成。

我真的想避免任何复制/粘贴的废话,因为将来可能会添加测试,我不应该在以后承担复制的负担。

如何导入/继承我的标准单元测试以作为常规测试用例或 GWT 测试用例运行?

I have a JUnit test that I run on one class, but I recently wrote an emulated version for GWT. Since the specification is the same, I would like to use the same test case, but I want it to run in the GWT environment, which would typically be accomplished by extending GWTTestCase.

I really want to avoid any copy/paste nonsense, because there are likely to be added tests in the future, which I should not be burdened with copying later.

How can I import/inherit my standard unit test to be run as either a regular test case or a GWT test case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无人接听 2024-10-24 01:14:11

我已经找到了这个问题的解决方案。

如果使用 GWTTestCase 扩展原始测试,则可以重写 getModuleName 以返回 null。这告诉 GWTTestCase 作为正常的纯 java 测试运行(根本没有翻译)。

然后,您可以使用覆盖 getModuleName 的测试用例来扩展该测试用例以返回模块名称,并且将通过翻译运行相同的测试。

基本上:

public class RegularTest extends GWTTestCase {

  @Override
  public String getModuleName() { return null; }

  public void testIt() {...}

}

...以及 GWT 版本...

public class GwtTest extends RegularTest {

  @Override
  public String getModuleName() { return "some.module"; }

}

这样做的缺点是它迫使您使用 JUnit3 样式测试,我觉得这有点烦人,但它胜过其他选择。

I have found the solution to this problem.

If you extend the original test with GWTTestCase, you can override getModuleName to return null. This tells GWTTestCase to run as a normal pure java test (no translation at all).

You can then extend this test case with one that overrides getModuleName to return a module name, and the same tests will be run with translation.

Basically:

public class RegularTest extends GWTTestCase {

  @Override
  public String getModuleName() { return null; }

  public void testIt() {...}

}

...and the GWT version...

public class GwtTest extends RegularTest {

  @Override
  public String getModuleName() { return "some.module"; }

}

The downside to this is that it forces you to use JUnit3 style tests, which I find a little annoying, but it beats the alternative.

扶醉桌前 2024-10-24 01:14:11

我认为没有简单的方法..但是你可以提取你的junit测试的接口,gwt测试用例和junit测试用例实现这个接口。可以创建第三个类来实现,gwt测试用例和junit测试的所有测试调用方法都委托给这个实现类。

public interface IRegularTest {
       public void testSomething();
       public void testSomething2();
}

public class RegularTestImpl implements IRegularTest {

      public void testSomething(){
         // actual test code
      }

      public void testSomething2(){
         // actual test code
      }

}

public class RegularTest extends TestCase implements IRegularTest {
      IRegularTest impl = new RegularTestImpl();

      public void testSomething(){
           impl.testSomething   
      }

      public void testSomething2(){
      }
}


public class GwtTest extends TestCase implements IRegularTest {
      IRegularTest impl = new RegularTestImpl();

      public void testSomething(){
           impl.testSomething   
      }

      public void testSomething2(){
      }
  }

I think there is no easy way .. But you can extract an interface of your junit test, gwt test case and junit test case implements this interface. You can create a third class for implementation, all test call methods of gwt test case and junit test are delegated to this implementation class.

public interface IRegularTest {
       public void testSomething();
       public void testSomething2();
}

public class RegularTestImpl implements IRegularTest {

      public void testSomething(){
         // actual test code
      }

      public void testSomething2(){
         // actual test code
      }

}

public class RegularTest extends TestCase implements IRegularTest {
      IRegularTest impl = new RegularTestImpl();

      public void testSomething(){
           impl.testSomething   
      }

      public void testSomething2(){
      }
}


public class GwtTest extends TestCase implements IRegularTest {
      IRegularTest impl = new RegularTestImpl();

      public void testSomething(){
           impl.testSomething   
      }

      public void testSomething2(){
      }
  }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文