小编amo*_*moe的帖子

在test中注入EntityManager时,Powermock和Spring会导致ConversionException

当尝试使用PowerMockRule技术组合Spring测试运行器和PowerMock运行器时,每当我尝试EntityManager使用PersistenceContextJPA中的注释注入时,我都会从Thoughtworks XStream库中获得异常.不使用时,相同的测试工作正常PowerMockRule.我还在测试开始时忽略了PowerMockLoader中的所有软件包.我尝试了各种值,@PowerMockIgnore因为这通常解决了我对PowerMock的问题,但是,即使忽略绝对每个包,这个错误仍然会发生.

@PowerMockIgnore("*")
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("/test-configuration.xml")
public class SpringAndPowerMockTest {
    @Rule
    public PowerMockRule rule = new PowerMockRule();

    @PersistenceContext
    private EntityManager manager;

    @Test
    public void test() {
    }
}
Run Code Online (Sandbox Code Playgroud)

例外情况如下 - 链接到pastebin上的完全回溯,回溯超出了问题长度的限制):

com.thoughtworks.xstream.converters.ConversionException: Could not call org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.readObject() : Could not call java.util.concurrent.CopyOnWriteArrayList.readObject() : Could not call java.security.CodeSource.readObject() : null

相关持久单元:

<persistence-unit name="inMemory">
  <provider>org.hibernate.ejb.HibernatePersistence</provider>

  <properties>
    <property name="hibernate.connection.driver_class" value="org.h2.Driver" />
    <property name="hibernate.connection.url" value="jdbc:h2:mem:InMemoryUnitTests;MODE=MySQL;DB_CLOSE_ON_EXIT=FALSE" />
    <property name="hibernate.connection.username" value="sa" />
    <property name="hibernate.connection.password" value="" />
    <property name="hibernate.hbm2ddl.auto" …
Run Code Online (Sandbox Code Playgroud)

java spring jpa powermock

32
推荐指数
1
解决办法
3000
查看次数

使用Vue webpack模板进行环境独立构建

我使用构建服务器来构建我的Vue项目,使用npm run buildVue 2模板提供的命令.Vue模板还提供了访问可在目录下的文件中配置的特定于环境的数据的功能config.喜欢的东西prod.env.js,等你再通过访问该数据process.env.API_PREFIX模板手动所见.

我希望能够构建一次代码,然后将相同的构建(由输出定义Dist)部署到多个服务器,但让不同的服务器使用不同的配置(不同的API_PREFIX等).目前,process.envWebpack编译器在构建时扩展了引用.因此,我必须为每个环境重建.

我可以想到几种方法来实现这一点 - 显然配置的加载必须在运行时进行,并且鉴于它在浏览器中运行并且必须引用某个文件,它必须通过AJAX请求Web服务器单独或类似地提供的一些静态JSON配置.但我有兴趣知道这里有人会如何处理这个要求.

javascript deployment build webpack vue.js

9
推荐指数
1
解决办法
612
查看次数

如何在TestCase子类中隐藏我的堆栈帧?

我想将自定义断言方法添加到TestCase子类.我试图从unittest模块中复制我的实现,以便TestCase尽可能地匹配常规的行为.(我更愿意委托,self.assertEqual()但这会导致更多的回溯噪声,见下文.)unittest模块似乎在报告失败的断言时自动隐藏其实现的一些内部细节.

import unittest

class MyTestCase(unittest.TestCase):
    def assertLengthIsOne(self, sequence, msg=None):
        if len(sequence) != 1:
            msg = self._formatMessage(msg, "length is not one")
            raise self.failureException(msg)

class TestFoo(MyTestCase):
    seq = (1, 2, 3, 4, 5)

    def test_stock_unittest_assertion(self):
        self.assertEqual(len(self.seq), 1)

    def test_custom_assertion(self):
        self.assertLengthIsOne(self.seq)


unittest.main()
Run Code Online (Sandbox Code Playgroud)

这样的输出是这样的:

amoe@vuurvlieg $ python unittest-demo.py
FF
======================================================================
FAIL: test_custom_assertion (__main__.TestFoo)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "unittest-demo.py", line 16, in test_custom_assertion
    self.assertLengthIsOne(self.seq)
  File "unittest-demo.py", line 7, in assertLengthIsOne
    raise self.failureException(msg) …
Run Code Online (Sandbox Code Playgroud)

python testing unit-testing subclass stack-trace

8
推荐指数
1
解决办法
1096
查看次数

运行普通测试时,PowerMockRunner会导致ExceptionInInitializerError

我无法使用Powermock测试运行器运行一个非常简单的测试类.它会导致ExceptionInInitializerError.它看起来是类路径依赖的问题,但是,我尝试了一些依赖版本的变体,但它们都会导致相同的错误.使用Powermock测试运行器时,如何才能通过这个简单的测试?

测试代码:

package net.solasistim.hello;

import org.junit.Test;
import org.junit.Assert;
import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;

@RunWith(PowerMockRunner.class)
public class HelloTest {
    @Test
    public void testMain() {
        Assert.assertTrue(true);
    }
} 
Run Code Online (Sandbox Code Playgroud)

项目POM:

<project>
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.solasistim.hello</groupId>
  <artifactId>hello</artifactId>
  <version>1</version>
  <packaging>jar</packaging>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <powermock.version>1.5</powermock.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
   </dependency>
   <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-easymock</artifactId>
      <version>${powermock.version}</version>
      <scope>test</scope>
   </dependency>  
   <dependency>
      <groupId>cglib</groupId>
      <artifactId>cglib</artifactId>
      <version>3.0</version>
      <scope>test</scope>
   </dependency>  
   <dependency>
      <groupId>org.ow2.asm</groupId>
      <artifactId>asm</artifactId>
      <version>4.1</version>
      <scope>test</scope>
   </dependency>  
  </dependencies>
</project>
Run Code Online (Sandbox Code Playgroud)

运行mvn clean compile test导致以下输出:

-------------------------------------------------------------------------------
Test set: net.solasistim.hello.HelloTest
------------------------------------------------------------------------------- …
Run Code Online (Sandbox Code Playgroud)

java easymock powermock maven

6
推荐指数
1
解决办法
4125
查看次数

使用 TypeScript 和 React-Redux 时推断映射的 props

我找到了一种在使用mapStateToPropsfrom时获得类型安全的方法react-redux:如文档所述,您可以定义一个接口并React.Component<T>使用您的接口进行参数化。

但是,当我定义 时mapStateToProps,我已经定义了一个函数,其中可以推断结果对象的属性类型。例如,

function mapStateToProps(state: MyState) {
    return {
        counter: state.counter
    };
}
Run Code Online (Sandbox Code Playgroud)

在这里,counter可以推断prop与state.counter. 但我仍然必须有如下样板代码:

interface AppProps {
    counter: number;
}


class App extends React.Component<AppProps> { ... }

export default connect(mapStateToProps)(App);
Run Code Online (Sandbox Code Playgroud)

所以问题是,有没有什么方法可以构造代码,这样我就可以避免编写counter两次类型?或者为了避免参数化的类型React.Component——即使我可以从mapStateToProps函数的显式暗示的结果类型中推断出组件的道具,那也是可取的。我想知道上面的重复是否确实是使用 React-Redux 编写类型化组件的正常方式。

javascript typescript reactjs redux react-redux

6
推荐指数
1
解决办法
2166
查看次数

当initial-buffer-choice有自动保存数据时,如何防止emacs挂起?

我在守护进程模式下使用emacs,我也有一个initial-buffer-choice 变量集.有时,当我编辑我用的文件时,emacs会崩溃initial-buffer-choice.在这种情况下,当我使用--daemon启动emacs时,它将挂起并显示以下消息:

"todo.org has auto save data; consider M-x recover-this-file"
Run Code Online (Sandbox Code Playgroud)

由于我主要从init脚本启动守护进程,因此我无法确认或拒绝此对话框,因此守护进程将永远挂起.在这种情况下,如何绕过自动保存数据的通知?如果有必要,我不介意丢失自动保存数据.

我试图这样做:

(defadvice command-line
  (around my-command-line-advice)
  "Be non-interactive while starting a daemon."
  (if (and (daemonp)
           (not server-process))
      (let ((noninteractive t))
        ad-do-it)
    ad-do-it))
 (ad-activate 'command-line)
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用.我仍然得到相同的悬挂行为.实际上,在建议中放置一条"消息"调用表明该建议根本没有被调用.

类似的问题:如果文件有自动保存数据,emacs-daemon启动会冻结.但是,此解决方案不起作用initial-buffer-choice.接受的答案似乎是从以前的版本编辑过来的,该版本可能已经成功定义了command-line我想要的建议,但不幸的是这个版本现在已经消失,取而代之的是desktop.el特定的版本.

emacs advising-functions

5
推荐指数
1
解决办法
985
查看次数

如何从外部属性文件填充 Liquibase 参数值?

有什么方法可以根据外部属性文件的内容填充 Liquibase 变更日志文件中的参数吗?

就像,我想说:

<createTable tableName="${table.name}">
     <column name="id" type="int"/>
     <column name="${column1.name}" type="varchar(${column1.length})"/>
     <column name="${column2.name}" type="int"/>
</createTable>
Run Code Online (Sandbox Code Playgroud)

table.name并将和其他参数的值保留在外部文件中db.properties,并从变更日志中、从 Liquibase 命令行或作为运行 liquibase 的 Maven 插件的选项来引用该文件。

我似乎找不到任何方法来做到这一点,有可能吗?

java liquibase maven

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

Eclipse m2e插件似乎需要org.eclipse.jem.util 0.0.0

我尝试使用帮助>安装新软件和更新站点安装Eclipse Juno的M2E插件http://download.eclipse.org/technology/m2e/releases.当我尝试安装'Maven Integration for Eclipse'时,我收到以下消息:

Cannot complete the install because one or more required items could not be found.
  Software being installed: m2e - Maven Integration for Eclipse 1.3.1.20130219-1424 (org.eclipse.m2e.feature.feature.group 1.3.1.20130219-1424)
  Missing requirement: m2e - Maven Integration for Eclipse 1.3.1.20130219-1424
  (org.eclipse.m2e.feature.feature.group 1.3.1.20130219-1424) requires
  'org.eclipse.jem.util 0.0.0' but it could not be found
Run Code Online (Sandbox Code Playgroud)

如何避免此错误并安装M2E插件?

java eclipse maven

4
推荐指数
2
解决办法
4197
查看次数

如何在Hadoop 2中更改用户日志的日志级别?

我一直在尝试更改用户日志上的日志级别,即/var/log/hadoop-yarn/userlogs/application_<id>/container_<id>CDH 5.2.1上显示的文件.但是,无论我尝试什么,都只会INFO显示级别日志.我想启用TRACE级别日志进行调试.

到目前为止我尝试过的事情:

  • 将所有记录器设置为TRACE级别/etc/hadoop/conf/log4j.properties.
  • 设置mapreduce.map.log.levelmapreduce.reduce.log.levelmapred-site.xml.
  • 在提交之前设置mapreduce.map.log.levelmapreduce.reduce.log.level在作业配置中.
  • log4j.properties在我的作业jar文件中包含一个将根Log4j记录器设置为TRACE的文件.
  • 修改yarn-env.sh以指定YARN_ROOT_LOGGER=TRACE,console

这些都没有奏效 - 它们没有破坏任何东西,但它们对userlogs目录下的日志输出没有任何影响.修改yarn-env.sh 确实导致ResourceManager和NodeManager日志进入跟踪级别.不幸的是,这些对我的目的没用.

我出现以下错误/var/log/hadoop-yarn/userlogs/application_<id>/container_<id>/stderr可能是相关的.

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/lib/zookeeper/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/hadoop-yarn/nm-local-dir/usercache/tomcat/appcache/application_1419961570089_0001/filecache/10/job.jar/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
log4j:WARN No appenders could be found for logger (org.apache.hadoop.ipc.Server).
log4j:WARN …
Run Code Online (Sandbox Code Playgroud)

java logging hadoop log4j hadoop2

3
推荐指数
1
解决办法
7961
查看次数

如何从客户端在recv()中导致ECONNRESET?

我正在使用一个服务器,在调用recv()后返回-1并将errno设置为ECONNRESET时崩溃.我最初使用nmap找到了这个条件(我不是一个破解者,只是测试当时端口是否打开.)但是,nmap使用原始套接字所以我不太乐意将此作为测试用例提交给开发人员.我宁愿在C中编写一个可以导致ECONNRESET的客户端程序.

从我的客户端立即连接后连接()到服务器,然后关机()套接字:到目前为止,我已经试过两件事情.服务器上的recv()仍然返回1(我已经插入了调试代码,所以我可以看到返回值.)我也尝试用一些字符串调用send(),然后立即调用shutdown().没有骰子,弦被传送好了.

那我怎么会造成这种情况呢?非便携式很好,我正在使用Linux.

c sockets linux posix

1
推荐指数
1
解决办法
3287
查看次数