标签: junit

JUnit 5:抛出如何断言异常?

有没有更好的方法断言方法在JUnit 5中抛出异常?

目前,我必须使用@Rule来验证我的测试是否会引发异常,但这对于我希望多个方法在我的测试中抛出异常的情况不起作用.

java junit junit5 junit-jupiter

162
推荐指数
8
解决办法
13万
查看次数

在执行JpaTest时无法找到@SpringBootConfiguration

我是框架的新手(刚刚通过了这个类),这是我第一次使用springboot.

我正在尝试运行一个简单的Junit测试来查看我的CrudRepositories是否确实正常工作.

我一直得到的错误是:

无法找到@SpringBootConfiguration,您需要在测试java.lang.IllegalStateException中使用@ContextConfiguration或@SpringBootTest(classes = ...)

不弹簧启动配置自己?

我的测试班

@RunWith(SpringRunner.class)
@DataJpaTest
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class JpaTest {

@Autowired
private AccountRepository repository;

@After
public void clearDb(){
    repository.deleteAll();
}

 @Test
 public void createAccount(){
     long id = 12;
     Account u = new Account(id,"Tim Viz");
     repository.save(u);

     assertEquals(repository.findOne(id),u);

 }


 @Test
 public void findAccountByUsername(){
     long id = 12;
     String username = "Tim Viz";
     Account u = new Account(id,username);
     repository.save(u);

     assertEquals(repository.findByUsername(username),u);

 }
Run Code Online (Sandbox Code Playgroud)

我的Spring启动应用启动器

@SpringBootApplication
@EnableJpaRepositories(basePackages = {"domain.repositories"})
@ComponentScan(basePackages = {"controllers","domain"})
@EnableWebMvc
@PropertySources(value    {@PropertySource("classpath:application.properties")})
    @EntityScan(basePackages={"domain"})
    public class Application …
Run Code Online (Sandbox Code Playgroud)

java junit spring spring-data spring-boot

160
推荐指数
8
解决办法
14万
查看次数

如何使用ArgumentCaptor进行存根?

在Mockito 文档javadocs中

建议使用ArgumentCaptor进行验证,但不使用stubbing.

但我不明白ArgumentCaptor如何用于存根.有人可以解释上面的陈述,并说明ArgumentCaptor如何用于存根或提供一个链接,说明如何做到这一点?

java junit unit-testing mockito

156
推荐指数
1
解决办法
14万
查看次数

setUp()和setUpBeforeClass()之间的区别

使用JUnit进行单元测试时,有两种类似的方法,setUp()setUpBeforeClass().这些方法有什么区别?另外,tearDown()和之间有什么区别tearDownAfterClass()

以下是签名:

@BeforeClass
public static void setUpBeforeClass() throws Exception {
}

@AfterClass
public static void tearDownAfterClass() throws Exception {
}

@Before
public void setUp() throws Exception {
}

@After
public void tearDown() throws Exception {
}
Run Code Online (Sandbox Code Playgroud)

java junit

155
推荐指数
4
解决办法
11万
查看次数

我为什么要使用Hamcrest-Matcher和assertThat()而不是传统的assertXXX() - 方法

当我查看Assert类JavaDoc中的示例时

assertThat("Help! Integers don't work", 0, is(1)); // fails:
// failure message:
// Help! Integers don't work
// expected: is <1> 
// got value: <0>
assertThat("Zero is one", 0, is(not(1))) // passes
Run Code Online (Sandbox Code Playgroud)

比方说,我没有看到一个很大的优势assertEquals( 0, 1 ).

如果构造变得更复杂但是你看到更多的优点,那么对于消息可能很好吗?可读性?

java testing junit hamcrest junit4

150
推荐指数
5
解决办法
5万
查看次数

JUnit混淆:使用'extends TestCase'还是'@Test'?

我发现JUnit的正确使用(或至少是文档)非常令人困惑.这个问题既可作为未来参考,也可作为真正的问题.

如果我理解正确,有两种主要的方法来创建和运行JUnit测试:

方法A(JUnit 3-style):创建一个扩展TestCase的类,并用该单词启动测试方法test.当作为JUnit Test(在Eclipse中)运行该类时,test将自动运行以该单词开头的所有方法.

import junit.framework.TestCase;

public class DummyTestA extends TestCase {

    public void testSum() {
        int a = 5;
        int b = 10;
        int result = a + b;
        assertEquals(15, result);
    }
}
Run Code Online (Sandbox Code Playgroud)

方法B(JUnit 4-style):创建一个"普通"类并@Test在方法前加一个注释.请注意,您不必使用单词启动方法test.

import org.junit.*;
import static org.junit.Assert.*;

public class DummyTestB {

    @Test
    public void Sum() {
        int a = 5;
        int b = 10;
        int result = a + b;
        assertEquals(15, result);
    }
}
Run Code Online (Sandbox Code Playgroud)

混合两者似乎不是一个好主意,请参阅例如 …

java junit automated-tests

149
推荐指数
4
解决办法
7万
查看次数

警告:不推荐使用Assert类型的方法assertEquals

由于该方法Assert.assertEquals已弃用,我们现在应该使用哪种方法?

以下代码:

String arg1 = "test";
String arg2 = "me";

Assert.assertEquals(arg1, arg2);
Run Code Online (Sandbox Code Playgroud)

给出以下警告:

此行有多个标记

  • 不推荐使用Assert类型的方法assertEquals(String,String)
  • Assert类型已弃用

java junit

149
推荐指数
2
解决办法
8万
查看次数

断言Junit中的List

如何在JUnit测试用例中对列表进行断言?不仅列表的大小,而且列表的内容.

java collections junit unit-testing

147
推荐指数
7
解决办法
18万
查看次数

在JUnit断言中比较数组,简洁的内置方式?

是否有一种简洁的内置方法在JUnit中对两个类似类型的数组进行等于断言?默认情况下(至少在JUnit 4中)它似乎在数组对象本身上进行实例比较.

EG,不起作用:

int[] expectedResult = new int[] { 116800,  116800 };
int[] result = new GraphixMask().sortedAreas(rectangles);
assertEquals(expectedResult, result);
Run Code Online (Sandbox Code Playgroud)

当然,我可以手动完成:

assertEquals(expectedResult.length, result.length);
for (int i = 0; i < expectedResult.length; i++)
    assertEquals("mismatch at " + i, expectedResult[i], result[i]);
Run Code Online (Sandbox Code Playgroud)

..但有更好的方法吗?

java arrays junit assertions

145
推荐指数
6
解决办法
10万
查看次数

在Hamcrest中检查列表是否为空

我想知道是否有人知道如何使用assertThat()和检查列表是否为空Matchers

我只能使用JUnit的最佳方式:

assertFalse(list.isEmpty());
Run Code Online (Sandbox Code Playgroud)

但我希望在Hamcrest有一些方法可以做到这一点.

java collections junit hamcrest

142
推荐指数
3
解决办法
11万
查看次数