Tag: junit

你可以添加一个自定义的消息AssertJ assertThat?

我们有一个testing套件,主要使用与Hamcrest匹配器的JUnit断言。 我们的一个团队开始尝试AssertJ ,并以其语法,灵活性和声明性给人印象深刻。 JUnit提供了一个function,我无法在AssertJ中find相应的function:添加自定义断言失败消息。 我们经常比较不是为了人类可读性而devise的对象,并且会有随机的Ids或UUID,而且不可能通过它们包含的数据来判断它们应该是什么。 遗憾的是,这对于我们的代码库是不可避免的,因为它实现的目标之一就是在其他服务之间映射数据,而不必理解它是什么。 在JUnit中, assertThat方法在Matcher<T>参数之前提供了一个带有String reason参数的版本。 这使得添加一个简短的debugging串来解决这个问题变得微不足道,比如说比较对于一个人来说意味着什么。 另一方面,AssertJ提供了一个不同的通用static assertThat 断言 ,这个方法返回某种forms的接口Assert或其中一个实现类。 此接口不提供设置自定义消息的标准方式,以包含故障。 有没有办法从AssertJ API或其扩展之一获得这个function,而不必为我们想要添加消息的每个断言types创build一个自定义的断言类 ?

在大多数JUnittesting中抛出Exception是否违背最佳实践?

几乎所有的JUnittesting都是用以下签名书写的: public void testSomething() throws Exception 我的推理是我可以专注于我正在testing的内容,而不是JUnit似乎给我免费的exception处理。 但是我这样做是否错过了什么? 这是否违背最佳做法? 我会通过在testing中明确捕获特定的exception,然后失败()来获得任何东西吗?

执行JpaTest时无法find@SpringBootConfiguration

我是新来的框架(只是通过类),这是我第一次使用springboot。 我试图运行一个简单的Junittesting,看看我的CrudRepositories是否确实工作。 我不断收到的错误是: 无法find@SpringBootConfiguration,您需要使用@ContextConfiguration或@SpringBootTest(classes = …)与您的testingjava.lang.IllegalStateException 不是春季开机configuration本身? 我的testing课 @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 = […]

unit testing广播接收机?

这里是我的项目的BroadcastReceiver,我正在寻找unit testing。 当用户拨打电话时,它抓住电话号码,并build立一个意图开始一个新的活动,传递电话号码。 public class OutgoingCallReceiver extends BroadcastReceiver { @Override public void onReceive(Context xiContext, Intent xiIntent) { if (xiIntent.getAction().equalsIgnoreCase(Intent.ACTION_NEW_OUTGOING_CALL)) { String phoneNum = xiIntent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); Intent intent = new Intent(xiContext, MyActivity.class); intent.putExtra("phoneNum", phoneNum); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); xiContext.startActivity(intent); setResultData(null); } } } 到目前为止,我的unit testing看起来像这样: public class OutgoingCallReceiverTest extends AndroidTestCase { private OutgoingCallReceiver mReceiver; @Override protected void setUp() throws Exception […]

hamcresttesting总是失败

我正在使用hamcrest 1.3来testing我的代码。 这只是一个死亡。 我试图testing它,以确保生成的数字是小于13.我有一个打印语句,打印什么数字生成。 产生的数字总是less于13,但是testing总是失败。 有什么我做错了吗? 这是我正在testing的代码。 import java.util.Random; public class Die { private int numSides; Random rand; public Die(int numSides){ this.numSides = numSides; rand = new Random(System.currentTimeMillis()); } public int roll(){ return rand.nextInt(numSides) + 1; } } 这是我的testing代码。 import static org.hamcrest.Matchers.*; import static org.hamcrest.MatcherAssert.assertThat; import org.junit.Test; public class DieTest { @Test public void testRoll() […]

Eclipse JUnit – 在Eclipse窗口中看到“initializationError”的可能原因

我知道这个问题是相当普遍的,但我还没有发现为什么这个错误可能会显示任何提示。 在Eclipse窗口中看到initalizationError的可能原因是什么? 我没有得到有用的信息,只是一个漫长而无用的失败追踪(不包括在这里)。 我正在使用JUnit 4.11 我写了下面的代码 – 只是为了看看它是否工作: package test; import static org.junit.Assert.*; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class SimpleTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @AfterClass public static void tearDownAfterClass() throws Exception { } @Test public void test() { assertEquals(15, 15); } } 编辑:对不起在Eclipse窗口中它实际上被称为“失败跟踪”: java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing at java.lang.ClassLoader.defineClass1(Native […]

如何在Eclipse中默认源文件夹以进行新的JUnittesting?

我们的大多数Eclipse项目都有多个源文件夹,例如: 的src /主/ JAVA 的src /testing/ JAVA 当您右键单击一个类并selectNew JUnit Test时,新testing的默认源文件夹是“src / main / java”(可能是项目属性中列出的第一个源文件夹)。 有没有办法改变新的JUnittesting的默认源文件夹,以便当我做上述操作时,新的testing将被创build在默认的“src / test / java”文件夹中?

如何运行并发unit testing?

如何使用junit来运行并发testing? 假设我有一堂课 public class MessageBoard { public synchronized void postMessage(String message) { …. } public void updateMessage(Long id, String message) { …. } } 我想同时testing多个访问这个postMessage。 对此有何build议? 我希望对我所有的setter函数(或涉及到创build/更新/删除操作的任何方法)运行这种并发性testing。

我如何testing与junit log4jlogging了一个警告?

我正在testing一个方法,当出现错误时会logging警告并返回null。 就像是: private static final Logger log = Logger.getLogger(Clazz.class.getName()); …. if (file == null || !file.exists()) { // if File not found log.warn("File not found: "+file.toString()); } else if (!file.canWrite()) { // if file is read only log.warn("File is read-only: "+file.toString()); } else { // all checks passed, can return an working file. return file; […]

为一个接口的多个实现编写一个unit testing

我有一个接口List其实现包括单链接列表,双向,循环等。我为Singly编写的unit testing应该对双向以及循环和其他任何新的接口实现中的大部分都有好处。 因此,不要为每个实现重复unit testing,JUnit是否提供了一些内置的东西,让我有一个JUnittesting,并针对不同的实现运行它? 使用JUnit参数化testing我可以提供不同的实现,如Singly,double,circular等,但是对于每个实现,同一个对象用于执行类中的所有testing。