编辑:目前没有JUnit 4。
嗨,您好,
我对使用JUnit进行“智能”异常测试有疑问。目前,我这样做是这样的:
public void testGet() {
SoundFileManager sfm = new SoundFileManager();
// Test adding a sound file and then getting it by id and name.
try {
SoundFile addedFile = sfm.addSoundfile("E:\\Eclipse_Prj\\pSound\\data\\Adrenaline01.wav");
SoundFile sf = sfm.getSoundfile(addedFile.getID());
assertTrue(sf!=null);
System.out.println(sf.toString());
sf = sfm.getSoundfileByName("E:\\Eclipse_Prj\\pSound\\data\\Adrenaline01.wav");
assertTrue(sf!=null);
System.out.println(sf.toString());
} catch (RapsManagerException e) {
System.out.println(e.getMessage());
}
// Test get with invalid id.
try {
sfm.getSoundfile(-100);
fail("Should have raised a RapsManagerException");
} catch (RapsManagerException e) {
System.out.println(e.getMessage());
}
// Test get by name with invalid name
try {
sfm.getSoundfileByName(new String());
fail("Should have raised a RapsManagerException");
} catch (RapsManagerException e) {
System.out.println(e.getMessage());
}
}
如您所见,对于每个应该引发异常的函数,我都需要一个try / catch块。似乎不是执行此操作的好方法-还是没有可能减少try / catch的使用?
我建议您需要分解testGet
为多个单独的测试。各个try / catch块似乎彼此非常独立。您可能还希望将通用初始化逻辑提取到其自己的设置方法中。
一旦有了它,就可以使用JUnit4的异常注释支持,如下所示:
public class MyTest {
private SoundManager sfm;
@Before
public void setup() {
sfm = new SoundFileManager();
}
@Test
public void getByIdAndName() {
// Test adding a sound file and then getting it by id and name.
SoundFile addedFile =
sfm.addSoundfile("E:\\Eclipse_Prj\\pSound\\data\\Adrenaline01.wav");
SoundFile sf = sfm.getSoundfile(addedFile.getID());
assertTrue(sf!=null);
System.out.println(sf.toString());
sf = sfm.getSoundfileByName("E:\\Eclipse_Prj\\pSound\\data\\Adrenaline01.wav");
assertTrue(sf!=null);
System.out.println(sf.toString());
}
@Test(expected=RapsManagerException.class)
public void getByInvalidId() {
// Test get with invalid id.
sfm.getSoundfile(-100);
}
@Test(expected=RapsManagerException.class)
public void getByInvalidName() {
// Test get with invalid id.
sfm.getSoundfileByName(new String());
}
}
问题内容: 我真的是java的新手。 我正在构造函数上运行一些JUnit测试。构造函数是这样的:如果为其参数之一赋予null或空字符串,则应该抛出异常。 当我在JUnit中使用null或空字符串参数测试此构造函数时,即使我几乎100%确信将此类参数传递给它时,构造函数方法确实会引发异常,我也会看到一条红色的条。 如果该方法以预期的方式引发异常,则JUnit中是否应该没有绿色的条形?还是当异常抛出按
我应该如何测试异常?我可以mock connector并且我可以赋予它抛出异常的行为,但是我不明白下一步该怎么做。
我构建了一个有3个属性的帐户类:余额、所有者、acctNo。帐户类有2个构造函数,一个接受3个属性,一个不接受数据。帐户类有设置和获取方法以及存款和取款方法。 我还构建了一个类,该类从类扩展而来。将此类修改为类后,取款方法或此方法尝试将余额设置为零以下,将抛出。 JUnit测试人员修改测试方法,将尝试提取超过当前余额的可用,所以做测试方法。我需要修改JUnit测试透支帐户,以便它捕获异常,并捕获。
问题内容: 我有一个尝试获取某些文件的简单方法。我想测试文件何时不存在,这就是我的问题所在。测试不断失败。 该方法类似于: 在测试中,我尝试了两种单独的解决方案,但均未成功。 使用SO解决方案中建议的新样式 public ExpectedException exception = ExpectedException.none(); @Test public void testPopulateCon
我试图创建一个测试来验证我的代码(见下面的伪代码)是否正确捕获异常。我知道JUnit能够测试代码是否用以下代码抛出异常: 然而,我正在测试的软件的原始代码捕获了这个异常并打印了一条消息 JUnit是否有办法验证此消息?或者我应该改变一下我的流行语? 注:我已阅读,我应使用以下内容: 但是程序崩溃,因为它无法识别对象。 我尝试测试的方法的伪代码(出于隐私原因,不要发布确切的内容):
尝试让JUnit与mockito测试一起工作,并在我的测试中获得NPE。我想验证一下,当调用时,紧接着调用了方法。我觉得奇怪的一个问题是,在Mockito上。验证(registrationServiceImpl,Mockito.times(1))。创建注册人(registrationDTO) 方法?IntelliJ只建议界面中的方法? 我的测试代码如下: 下面是我正在测试的代码: