Tag: unit testing

Cobertura覆盖和断言关键字

我对Cobertura测量的unit testing的线路覆盖范围很痛苦,因为我有assert声明未在测试中涵盖。 我应该测试assert离子,有没有办法让Cobertura忽略它们,这样它们不会影响我的测试覆盖率?

如何在Junit中处理测试数据?

在TDD(测试驱动开发)开发过程中,如何处理测试数据? 假设一个场景,解析一个日志文件以获取所需的列。 对于强大的测试,我如何准备测试数据? 我是否正确地将这些文件放在测试类文件中?

Springunit testing用例不会回滚插入记录

以下测试用例在function上正常工作,但其中一个必须在数据库中创建新文章的测试方法在测试用例执行结束时不会回滚。 我希望它能以这种方式运作。 对于测试用例,更新文章实际上在测试用例执行结束时回滚更新。 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(value = “/applicationContext-test.xml”) @TransactionConfiguration(transactionManager = “txManager”, defaultRollback = true) @Transactional public class PriceRepositoryTest { @Resource(name =”repository”) private PriceRepository repository; @Test public void testGetAll() throws Exception { Assert.assertEquals(8, repository.getAll().size()); } @Test @Rollback public void shouldSaveNewArticle(){ Article article = new Article(); article.setName(“Article”); article.setPrice(33); repository.save(article); Assert.assertEquals(9, repository.getAll().size()); } @Test @Rollback public void shouldUpdateArticle(){ Article […]

如何模拟从抽象类inheritance的受保护子类方法?

如何使用Mockito或PowerMock来模拟由子类实现但从抽象超类inheritance的受保护方法? 换句话说,我想在模拟“doSomethingElse”时测试“doSomething”方法。 抽象超级 public abstract class TypeA { public void doSomething() { // Calls for subclass behavior doSomethingElse(); } protected abstract String doSomethingElse(); } 子类实现 public class TypeB extends TypeA { @Override protected String doSomethingElse() { return “this method needs to be mocked”; } } 解 这里给出的答案是正确的,如果涉及的类在同一个包中,它们将起作用。 但如果涉及不同的包,则可以选择使用PowerMock。 以下示例适用于我。 当然可能有其他方法可以做到这一点,这是有效的。 import static org.junit.Assert.assertEquals; import org.junit.Test; […]

在Hamcrest中进行测试,该列表仅存在具有特定属性的列表中的一个项目

使用Hamcrest,我们可以轻松地测试存在具有特定属性的列表中的至少一个项目,例如 List myList = …. MatcherAssert.assertThat(myList, Matchers.hasItem(Matchers.hasProperty(“fieldName”, Matchers.equalTo(“A funny string”))))); Pojo类是这样的: public class Pojo{ private String fieldName; } 这很好,但是如何检查列表中是否只有一个具有特定属性的对象?

带@ EnableJpa *注释的Spring @WebMvcTest

我有以下主类。 @EnableJpaAuditing @SpringBootApplication @EnableJpaRepositories(repositoryFactoryBeanClass = EnversRevisionRepositoryFactoryBean.class) public class SampleApplication { public static void main(String[] args) { SpringApplication.run(SampleApplication.class, args); } } 以及unit testing类。 @RunWith(SpringRunner.class) @WebMvcTest(controllers = { AccountController.class }, secure = false) public class AccountControllerTest { @Autowired private MockMvc mockMvc; // Commented out below 如果我要运行unit testing,它会给我这个错误。 IllegalArgumentException:必须至少存在一个JPA元模型! 所以我研究了一下,发现它是由于@EnableJpa*注释在使用@WebMvcTest被置于主类中,因此它找不到@Entity类,因此出现错误消息。 我遇到了一个页面 ,并描述了我或多或少相同的问题,并建议使用@SpringBootTest和@AutoConfigureMockMvc而不是@WebMvcTest 。 这是唯一可行的方法吗? 我希望能够使用@WebMvcTest因为使用@SpringBootTest会加载完整的上下文,并且需要更长的时间来运行测试。 按要求包括测试类。 @WebMvcTest(controllers = […]

使用JMockit模拟测试类的私有方法

我想模拟一个被测试类的私有方法但是方法在调用方法之后首先返回false两次,它应该返回false。 这是我试过的代码。 这是正在测试的类 public class ClassToTest { public void methodToTest() { Integer integerInstance = new Integer(0); boolean returnValue= methodToMock(integerInstance); if(returnValue) { System.out.println(“methodToMock returned true”); } else { System.out.println(“methodToMock returned true”); } System.out.println(); } private boolean methodToMock(int value) { return true; } } 考试class import org.junit.Test; import static mockit.Deencapsulation.*; import mockit.*; public class TestAClass { @Tested […]

通过Maven从内部类运行测试

我有以下测试结构: public class WorkerServiceTest { public class RaiseErrorTest extends AbstractDbUnitTest{ @Test public void testSomething(){ } … } … } 这样做是因为我不想为扩展AbstractDbUnitTest每个测试用例创建一个单独的类文件。 问题是mvn test没有从我的内部类运行测试。 有没有办法如何配置Maven来运行这样的测试? 当然我可以在父类中创建调用内部类方法的方法,但我想要一个更清晰的方法。

@Before和@Transactional

我有 @RunWith(SpringJUnit4ClassRunner.class) @TransactionConfiguration(defaultRollback = true, transactionManager = “transactionManager”) @Before @Transactional public void mySetup() { // insert some records in db } @After @Transactional public void myTeardown() { // delete some records } @Test @Transactional public void testMy() { // do stuff } 我的问题是:mySetup,testMy和myTeardown都会在同一个事务中运行吗? 看起来他们应该这样,但我得到了一些奇怪的错误,这可能表明他们互相踩着。

是否有可能与Mockito做严格的嘲笑?

我想使用严格的模拟,至少在第一次开发针对旧代码的一些测试时,因此如果我没有专门定义期望,那么在我的模拟上调用的任何方法都会抛出exception。 从我所看到的情况来看,如果我没有定义任何期望,Mockito将只返回null,稍后会在其他地方导致NullPointerException。 有可能吗? 如果有,怎么样?