Tag: unit testing

测试Java方法是否同步的好方法是什么?

我有几个实现一些接口的类。 接口有一个契约,有些方法应该同步,有些不应该,我想通过unit testing来validation所有实现的合同。 这些方法应该使用synchronized关键字或者锁定this – 非常类似于synchronizedCollection()包装器。 这意味着我应该能够在外部观察它。 要继续Collections.synchronizedCollection()的示例,如果我有一个线程调用iterator(),我仍然可以使用另一个线程进入add()等方法,因为iterator()不应该执行任何锁定。 另一方面,我应该能够在外部同步集合,并看到另一个线程阻塞add()。 有没有一种方法可以测试方法是否在JUnit测试中同步? 我想避免长时间的睡眠陈述。

如何获取在testng拆卸方法中运行的测试方法的名称?

基本上,我有一个拆解方法,我想登录到控制台,测试刚刚运行。 如何获得该字符串? 我可以获取类名,但我想要刚刚执行的实际方法。 public class TestSomething { @AfterMethod public void tearDown() { system.out.println(‘The test that just ran was….’ + getTestThatJustRanMethodName()’); } @Test public void testCase() { assertTrue(1==1); } } 应该输出到屏幕:“刚刚运行的测试是…. testCase” 但是,我不知道getTestThatJustRanMethodName实际上应该是什么魔法。

JUnit终止子线程

当我测试创建子线程的方法的执行时,JUnit测试在子线程之前结束并杀死它。 我如何强制JUnit等待子线程完成其执行? 谢谢

如何在JUnit5中使用Mockito

如何使用Mockito和JUnit 5进样? 在JUnit4中,我可以使用@RunWith(MockitoJUnitRunner.class) Annotation。 在JUnit5中没有@RunWith Annotation?

是否可以在PowerMock中对私有静态方法使用部分模拟?

从PowerMock主页上的示例中,我看到以下示例,用于部分模拟Mockito的私有方法: @RunWith(PowerMockRunner.class) // We prepare PartialMockClass for test because it’s final or we need to mock private or static methods @PrepareForTest(PartialMockClass.class) public class YourTestCase { @Test public void privatePartialMockingWithPowerMock() { PartialMockClass classUnderTest = PowerMockito.spy(new PartialMockClass()); // use PowerMockito to set up your expectation PowerMockito.doReturn(value).when(classUnderTest, “methodToMock”, “parameter1”); // execute your test classUnderTest.execute(); // Use PowerMockito.verify() to […]

Spring RestTemplate处理状态为NO_CONTENT的响应时的行为

好的,我有一个名为NamedSystems的类,它的唯一字段是一组NamedSystem。 我有一种方法可以通过某些标准找到NamedSystems。 那不是很重要。 当它得到结果时,一切正常。 但是,当它找不到任何东西,从而返回null(或空 – 我已尝试过两种方式)设置时,我就会遇到问题。 让我解释。 我正在使用Spring RestTemplate类,我在unit testing中进行这样的调用: ResponseEntity responseEntity = template.exchange(BASE_SERVICE_URL + “? alias={aliasValue}&aliasAuthority={aliasAssigningAuthority}”, HttpMethod.GET, makeHttpEntity(“xml”), NamedSystems.class, alias1.getAlias(), alias1.getAuthority()); 现在,因为这通常会返回200,但我想返回204,我的服务中有一个拦截器,它确定ModelAndView是否是NamedSystem,如果它的set是null。 如果是,我然后将状态代码设置为NO_CONTENT(204)。 当我运行junit测试时,我收到此错误: org.springframework.web.client.RestClientException: Cannot extract response: no Content-Type found 将状态设置为NO_CONTENT似乎擦除了内容类型字段(当我考虑它时确实有意义)。 那为什么还要看呢? Spring的HttpMessageConverterExtractor extractData方法: public T extractData(ClientHttpResponse response) throws IOException { MediaType contentType = response.getHeaders().getContentType(); if (contentType == null) { throw new […]

用于hashCode / equals契约的JUnit理论

以下类用作equals / hashCode契约的通用测试器。 它是本土测试框架的一部分。 你有什么想法? 我怎样(强)测试这门课程? 这是Junit理论的一个很好的用途吗? class上: @Ignore @RunWith(Theories.class) public abstract class ObjectTest { // For any non-null reference value x, x.equals(x) should return true @Theory public void equalsIsReflexive(Object x) { assumeThat(x, is(not(equalTo(null)))); assertThat(x.equals(x), is(true)); } // For any non-null reference values x and y, x.equals(y) // should return true if and only if […]

如何使用在mockito中调用之间更改状态的相同参数来validation相同模拟方法的调用?

我有以下代码进行unit testing: public void foo() { Entity entity = //… persistence.save(entity); entity.setDate(new Date()); persistence.save(entity); } 我想validation在第一次调用persistence.save entity.getDate()返回null 。 因此,我无法使用Mockito.verify(/*…*/)因为那时方法foo已经完成,并且entity.setDate(Date) 。 所以我认为我需要在调用发生时对调用进行validation。 我如何使用Mockito做到这一点?

JUnit:在调用每个@Test方法之前的新实例。 有什么好处?

目前,我正在阅读“JUnit in action”一书。 在本书中,我发现了以下文字: 在调用每个@Test方法之前,JUnit会创建测试类的新实例。 这有助于提供测试方法之间的独立性,并避免测试代码中的无意的副作用。 因为每个测试方法都在新的测试类实例上运行,所以我们无法跨测试方法重用实例变量值。 现在我认为这种方法没有多大意义: 例如: public class CalculatorTest { @Test public void testAdd_1() { Calculator calculator = new Calculator(); double result = calculator.add(1, 1); assertEquals(2, result, 0); } @Test public void testAdd_2() { Calculator calculator = new Calculator(); double result = calculator.add(2, 2); assertEquals(4, result, 0); } } 对于测试类CalculatorTest,没有任何好处。 好的,让我们去关注另一个例子: public […]

unit testing“本机”Java类在哪里?

为了“有趣”我将松散的几个Java类移植到PHP(例如java.util.regex.Matcher ),所以我希望能够为这些运行/移植unit testing: java.lang.StringBuilder java.util.regex.Pattern java.util.regex.Matcher 我在哪里可以找到它们? 任何半新版本的测试都会有所帮助。