【问题标题】:Run Current Junit Test in GWTTestCase在 GWTTestCase 中运行当前的 Junit 测试
【发布时间】:2011-02-14 03:26:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: gwt junit tdd


    【解决方案1】:

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

    如果您使用 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 样式测试,我觉得这有点烦人,但它胜过其他选择。

    【讨论】:

      【解决方案2】:

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

      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(){
            }
        }
      

      【讨论】:

      • 谢谢,但这是我想避免的事情。如果我必须这样做,很可能我不想添加额外的测试,当我知道我需要时。
      • 我认为您找不到比这个更好的解决方案。如果可以的话,我会是第一个投票的人。
      • 发现如果扩展 GWTTestCase 并覆盖 getModuleName 以返回 null,它会作为纯 java 测试运行。
      猜你喜欢
      • 2013-01-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多