- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个应该测试的方法:
public void createNode(String name, String primaryNodeType, String[] mixinNodeTypes) throws RepositoryException {
final Node parentNode = this.parentNodeStack.peek();
boolean isParentImport = (name == null && isParentNodeImport);
if (name == null) {
if (this.parentNodeStack.size() > 1) {
throw new RepositoryException("Node needs to have a name.");
}
name = this.defaultName;
}
//other stuff
}
在我的测试中,我放入了方法参数,该方法应该抛出 RepositoryException(第 6 行)。
@RunWith(JMock.class)
public class DefaultContentCreatorTest {
static final String DEFAULT_NAME = "default-name";
final Mockery mockery = new JUnit4Mockery();
DefaultContentCreator contentCreator;
Session session;
Node parentNode;
Property prop;
@Rule
public ExpectedException thrown = ExpectedException.none();
@Before
public void setup() throws Exception {
final SlingRepository repo = RepositoryProvider.instance().getRepository();
session = repo.loginAdministrative(null);
contentCreator = new DefaultContentCreator(null);
contentCreator.init(U.createImportOptions(true, true, true, false, false),
new HashMap<String, ContentReader>(), null, null);
parentNode = session.getRootNode().addNode(getClass().getSimpleName()).addNode(uniqueId());
}
@After
public void cleanup() throws RepositoryException {
if(session != null) {
session.save();
session.logout();
session = null;
}
}
@Test
public void createNodeWithoutNameAndTwoInStack() throws RepositoryException {
contentCreator.init(U.createImportOptions(true, true, true, false, false),
new HashMap<String, ContentReader>(), null, null);
//Making parentNodeStack.size() == 1
contentCreator.prepareParsing(parentNode, DEFAULT_NAME);
//Making parentNodeStack.size() == 2
contentCreator.createNode(uniqueId(), null, null);
//contentCreator.createNode method should now throw an exception
thrown.expect(RepositoryException.class); //Doesn't work
thrown.expectMessage("Node needs to have a name."); //Doesn't work
contentCreator.createNode(null, null, null);
}
}
但是测试失败,并出现此 RepositoryException。我做错了什么?顺便说一句,如果我使用 @Test(expected = RepositoryException.class)
一切正常。
UPD:我正在为 Apache Sling 类之一编写单元测试。这个类你可以看一下hereUPD2:有一个失败的测试异常堆栈跟踪:
javax.jcr.RepositoryException: Node needs to have a name.
at org.apache.sling.jcr.contentloader.internal.DefaultContentCreator.createNode(DefaultContentCreator.java:225)
at org.apache.sling.jcr.contentloader.internal.DefaultContentCreatorTest.createNodeWithoutNameAndTwoInStack(DefaultContentCreatorTest.java:278)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:68)
at org.jmock.integration.junit4.JMock$1.invoke(JMock.java:37)
at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:107)
at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:88)
at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:96)
at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:86)
at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:49)
at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:100)
at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:61)
at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:54)
at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:33)
at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:45)
at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:52)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:78)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:212)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:68)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
如您所见,它在第 278 行抛出异常,该行是 contentCreator.createNode(null, null, null);
方法调用的行。
最佳答案
总结一下评论中的讨论:解决方案是删除JMock
jUnit
运行程序。
关于java - JUnit ExpectedException 规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30785904/
我正在尝试验证我所有的异常都是正确的。因为值包装在 CompletableFutures 中,抛出的异常是 ExecutionException,原因是我通常会检查的异常。快速示例: void foo
我在使用 Visual Studio 单元测试框架时遇到了一个非常奇怪的情况。装饰为 [TestMethod, ExpectedException(typeof(InvalidOperationExc
我正在尝试在 C# UnitTest 中使用 ExpectedException 属性,但我在使用我的特定 Exception 时遇到问题>。这是我得到的: 注意:我用星号包裹了给我带来麻烦的行。
是否有 JUnit5 等效于 ExpectedException.expectCause() (JUnit4)? https://junit.org/junit4/javadoc/4.12/org/j
我正在尝试验证返回的异常和消息,但我在此消息中有一个可变的文件名。是否可以只用一种方法使用单元测试来做到这一点? public static string FileName {
我正在 Visual Studio 中进行一些单元测试: /// /// Padding14 should throw an ArgumentOutOfRangeException if strin
我有一个应该测试的方法: public void createNode(String name, String primaryNodeType, String[] mixinNodeTypes) th
我有一个类,用于映射通过 REST 从 json 对象传入的值。前端 javascript 正在制作传入的所有值字符串。如果我只需要字符串值,则使用 Spring 和 Jackson,一切正常。但是,
我在设置一些命令行脚本来测试我正在处理的项目的 NUnit 测试套件时开始遇到问题。 我注意到在 Visual Studio 中运行测试时或 Xamarin结果是我所期望的,但是当使用 nunit-c
我正在使用 NUnit 和 Rhino Mocks。我使用 AAA 语法并在设置方法中执行 Arrange 和 Act,每个测试方法都是一个断言。 [TestFixture] public class
如何在 MSTest 中放置多个 ExpectedExceptionin? 像这样的 [ExpectedException(typeof(ArgumentException))] [ExpectedE
我正在尝试为 InvalidArgumentException 测试我的类,但我得到了 Tests\BarTest::should_receive_parameter Missing argument
我正在尝试使用 JUnit 的 ExpectedExceptions。我已经试过了: public class ExpectedTest { @Rule public Expected
有一个关于 junit 的 ExpectedException 规则的使用的问题: 如此处所建议:junit ExpectedException Rule从 junit 4.7 开始,可以像这样测试异
在 junit 类中,我想测试是否抛出异常,如果没有,则提供一条解释性消息,提示在测试失败时要查找的内容。所以,像... thrown.expect(UnsupportedOperationE
我已经创建了一个类库。 我已经创建了单元测试项目来对一个类进行单元测试。 我上过一门特殊的课 " ExpectedExceptionAttribute Class " 我试图实现它。但是如果我启用
我想要一个 TestMethod 用于多个异常。问题是测试方法在第一次抛出异常后停止。 我知道我可以做这样的事情: try { sAbc.ToInteger(); Assert.Fail();
我有几个这种模式的单元测试: [TestMethod ()] [ExpectedException (typeof (ArgumentNullException))] public void DoSt
我认为这两个测试的行为应该相同,事实上我已经在我的项目中使用 MS Test 编写了测试,现在才发现它不像 NUnit 那样遵守预期的消息。 NUnit(失败): [Test, ExpectedExc
有人在 grails 单元测试中使用过这个注释吗? 似乎对我不起作用。 谢谢。 D 更新:我下面测试的最后一行确实抛出了预期的异常。但是测试失败(堆栈跟踪对于这里来说太大了......)。我正在使用
我是一名优秀的程序员,十分优秀!