Tag: junit4

测试自定义插件portlet:BeanLocatorException和Transaction roll-back用于服务测试

我的问题: 我可以成功测试CRUD服务操作。 我正在对@Before [setUp()]进行插入并在@After [tearDown()]上删除相同的数据但是我需要支持事务而不是编写插入和删除代码。 我成功获取了我的实体的单个记录,但是当我触发搜索查询或尝试获取多个实体时,我得到: com.liferay.portal.kernel.bean.BeanLocatorException:尚未为servlet上下文设置BeanLocator MyCustom-portlet 我已经按照以下一些链接来设置Junit与Liferay: Liferay wiki – 如何使用Junit在Portlet中测试服务 SO – Liferay中的unit testing SO – Junit测试DAO回滚或删除 我的环境 Liferay 6.0.5 EE与Tomcat捆绑在一起 带有Liferay IDE 1.4的Eclipse Helios使用Junit4 我在eclipse中使用“ant”命令运行我的测试,但不是通过输入Alt + Shift + X , T 。 如果我能够了解如何使用JUnit进行事务(或者至少有一些关于它如何在liferay中工作的想法)以及如何解决BeanLocatorException (或者至少为什么会抛出它),这将非常有用。 ) 任何帮助将不胜感激。

我可以为套件中的所有测试应用时间限制吗?

在JUnit中是否有一种方法可以为套件中包含的所有测试定义全局超时/限制。 好吧,让我来解释一下。 我想将junit测试套件引入到将在每个构建上运行的遗留项目的构建系统中。 该套件应包含快速运行的unit testing,但该项目在其测试源文件夹中具有混合的集成和unit testing集。 所以我的目标是为unit testing引入一个中央测试套件,它只包含那些能够在一定时限内运行的测试(每个测试单独进行)。 我想通过引入@Rule注释来强制执行该规则。 我试过这个: @RunWith(Suite.class) @SuiteClasses({…}) public class FastTestSuite{ @Rule Timeout timeout = new Timeout(1); } 但这似乎并没有成功。 我知道有一个事实,即测试的速度远低于1毫秒,但没有一个测试失败。

Junit4和TestNG在Maven的一个项目中

要将它们一起运行,可用的选项很少,但我选择了为Junit和TestNG使用不同的配置文件。 但现在的问题是排除和包括测试用例。 因为如果我们在maven中将testNG依赖项添加到主项目,它将跳过所有Junit,我已经决定将它放在单独的配置文件中。 所以我在默认(主)配置文件中排除TestNG测试,使用pom.xml中的以下条目进行编译: org.apache.maven.plugins maven-compiler-plugin 2.0.2 1.5 1.5 **/tests/**.* **/tests/utils/**.* 和surefire插件相同。 所以它适用于主配置文件并且只执行Junit4测试。 但是当我使用testNG配置文件时,它不会执行testNG测试,即使它不会编译它们。 我正在使用以下配置文件来执行它们。 testNG org.apache.maven.plugins maven-compiler-plugin 1.5 1.5 **/tests/**.java **/tests/utils/**.* org.apache.maven.plugins maven-surefire-plugin false **/**.class **/tests/utils/**.class org.testng testng 5.8 test jdk15 任何人都知道为什么它不包括它们并再次编译?

JUnit测试预期exception的正确方法

大家好,我想知道这种测试我的exception是否正常,我有这个例外我需要抛出第二个测试注释,我接收结果是一个红色邪恶的条,一个成功和一个失败,你可以猜到失败是我关心的,我有失败(); 但原因是因为我读到了测试exception的方法,现在我很困惑。 此外,我不得不说im willin得到绿色条,因为我期待exception,但我不知道失败是否是正确的方式来看到预期的exception的答案。 如果您有任何建议,我将不胜感激 @Before public void setUp() throws Exception { LogPack.logPacConfig(Constants.LOGGING_FILE); gtfri = “+RESP:GTFRI,380502,869606020101881,INCOFER-gv65,,10,1,1,0.0,0,888.1,-84.194560,9.955602,20170220074514,,,,,,0.0,,,,100,210100,,,,20170220074517,40A2$”; weirdProtocol = “+RESP:GRI,380502,869606020101881,INCOFER-gv65,,10,1,1,0.0,0,888.1,-84.194560,9.955602,20170220074514,,,,,,0.0,,,,100,210100,,,,20170220074517,40A2$”; factory = new LocomotiveFactory(); } @Test public void GTFRICreationTester_shouldPass() throws TramaConProtolocoloDesconocido { assertTrue(factory.createLocomotive(gtfri, false, new Date()) instanceof LocomotiveGTFRI); } @Test(expected = TramaConProtolocoloDesconocido.class) public void GTFRICreationTester_shouldFail() { try { factory.createLocomotive(weirdProtocol, false, new Date()); fail(“Expected an TramaConProtolocoloDesconocido”); } […]

使用Mockito在JUnit中使用PowerMock和PowerRule获取javassist.NotFoundException

我已经将JUnit中的PowerMock和PowerRule与Mockito集成在一起。 这是我的依赖项: javassist javassist 3.12.0.GA asm asm 3.3.1 cglib cglib 2.2.2 org.powermoc powermock-module-junit4 1.4.12 test org.powermock powermock-api-mockito 1.4.12 test org.powermock powermock-module-junit4-rule 1.4.12 test org.powermock powermock-classloading-objenesis 1.4.12 test 我的测试类是: public class TestClass extends AbstractShiroTest{ @Rule public PowerMockRule rule = new PowerMockRule(); @Autowired SomeService someService; @Before public void setUp(){ Map newMap = new HashMap(); newMap.put(“userTimeZone”, “Asia/Calcutta”); Subject […]

针对不同输入数据的Javaunit testing

我需要测试一些api。 例如,我在类中有多个@Test方法来测试我的function,在init之前我连接到我的服务的某个url并使用它。 如果我在多个url(不同的服务器环境)上提供服务,我该如何为不同的服务url测试此function? 流: 由url初始化conncetion 运行所有测试 初始由另一个urlconncetion 运行所有测试(相同) … 什么时候只有一个主人我喜欢这个: public class TestAPI{ @org.junit.Before public void init() { service = new Service(“www.test.com”); } @org.junit.Test public void testA(){ service.CallA(); } @org.junit.Test public void testB(){ service.CallB(); } }

在Eclipse中的单独JVM中运行每个JUnit测试?

我有一个项目,在大约200个测试类中有近500个单独的测试。 其中一些测试在完成后没有很好地拆除自己的状态,而在Eclipse中,这导致一些测试失败。 当从命令行通过Ant运行测试套件时,测试全部通过。 我可以在Eclipse中以某种方式启用“测试隔离”吗? 我不介意是否需要更长时间才能运行。 长期来看,我会清理行为不端的测试,但在短期内我想让测试工作。

使用TestSuite时,我可以避免在eclipse中运行两次junit测试吗?

我需要进行一些套件初始化(启动Web服务器)。 它运行正常,除了当我在eclipse中运行我的项目中的所有测试时,我的测试运行了两次。 我的测试套件看起来有点像这样: @RunWith(Suite.class) @Suite.SuiteClasses({ SubtestOne.class, SubtestTwo.class }) public class TestSuite { […] } public class SubtestOne { @Test public void testOne() { […] } } public class SubtestTwo { @Test public void testTwo() { […] } } 当我在eclipse中运行项目中的所有测试时,这会导致junit插件像这样运行两次测试: SubtestOne SubtestTwo 的TestSuite SubtestOne SubtestTwo 是否可以使“在项目中运行所有测试”不进行两次子测试? 我希望我的子测试只能作为套件的一部分运行。

使用PowerMockito 1.6validation静态方法调用

我正在为类似于下面给出的示例的方法编写JUnit测试用例: Class SampleA{ public static void methodA(){ boolean isSuccessful = methodB(); if(isSuccessful){ SampleB.methodC(); } } public static boolean methodB(){ //some logic return true; } } Class SampleB{ public static void methodC(){ return; } } 我在我的测试类中编写了以下测试用例: @Test public void testMethodA_1(){ PowerMockito.mockStatic(SampleA.class,SampleB.class); PowerMockito.when(SampleA.methodB()).thenReturn(true); PowerMockito.doNothing().when(SampleB.class,”methodC”); PowerMockito.doCallRealMethod().when(SampleA.class,”methodA”); SampleA.methodA(); } 现在我想validation是否调用类Sample B的静态methodC()。 如何使用PowerMockito 1.6实现? 我尝试了很多东西,但似乎并没有为我做好准备。 任何帮助表示赞赏。

JUnit测试总是回滚事务

我正在运行一个简单的JUnit测试再次应用程序DAO。 问题是我总是得到: javax.persistence.RollbackException: Transaction marked as rollbackOnly JUnit测试是: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {“classpath:com/my/app/context.xml”} @TransactionConfiguration(transactionManager = “transactionManager”, defaultRollback = false) @Transactional public class PerformanceTest { @Test @Transactional(propagation= Propagation.REQUIRES_NEW) @Rollback(false) public void testMsisdnCreationPerformance() { // Create a JPA entity // Persist JPA entity } } 正如您所看到的,我明确表示不会回滚此方法。 Spring JUnit是否支持始终将回滚设置为true? 提前致谢,