Questions tagged «java»

Java是一种流行的高级编程语言。如果您在使用或理解语言本身时遇到问题,请使用此标签。这个标签很少单独使用,最常与[spring],[spring-boot],[jakarta-ee],[android],[javafx],[gradle]和[maven]结合使用。

7
Mockito,JUnit和Spring
我直到今天才开始了解Mockito。我写了一些简单的测试(使用JUnit,请参见下文),但是我不知道如何在Spring的托管bean中使用模拟对象。什么是使用Spring的最佳实践。我应该如何向我的bean注入模拟依赖项? 您可以跳过这一步,直到回到我的问题。 首先,我学到了什么。这是一篇很好的文章Mocks Are n't Stubs,它解释了基础知识(Mock的检查行为验证而不是状态验证)。然后在这里有一个很好的例子Mockito 和这里更容易用嘲笑嘲笑。我们必须解释是的Mockito的模拟对象都是模拟和存根。 这里的Mockito这里匹配器,你可以找到更多的例子。 这个测试 @Test public void testReal(){ List<String> mockedList = mock(List.class); //stubbing //when(mockedList.get(0)).thenReturn("first"); mockedList.get(anyInt()); OngoingStubbing<String> stub= when(null); stub.thenReturn("first"); //String res = mockedList.get(0); //System.out.println(res); //you can also verify using argument matcher //verify(mockedList).get(anyInt()); verify(mockedList); mockedList.get(anyInt()); } 效果很好。 回到我的问题。这里有人将Mockito模拟注入Spring Bean中,有人尝试使用Springs ReflectionTestUtils.setField(),但是这里我们建议使用Spring Integration Tests,创建Mock对象来更改Spring的上下文。 我不太了解最后两个链接...有人可以向我解释Spring对Mockito有什么问题吗?这个解决方案怎么了? @InjectMocks private MyTestObject …

9
Android ListView所选项目保持突出显示
我有XML两个ListView,一个包含由选择查询(lv_cli)填充的客户端列表,另一个包含所选择的客户端的详细信息(lv_cli_det)。我想lv_cli在lv_cli_det显示细节的同时让客户保持选中状态。 XML: <ListView android:id="@+id/cli_lista" android:layout_width="512dp" android:layout_height="wrap_content" android:fadeScrollbars="false" > </ListView> <ListView android:id="@+id/cli_lista_det" android:layout_width="512dp" android:layout_height="wrap_content" android:layout_toRightOf="@+id/cli_lista" android:fadeScrollbars="false" > </ListView> Java: Cursor cursor = db.rawQuery("Select NrCl||';'||Nome From Clientes", null); final ListView t = (ListView)findViewById(R.id.cli_lista); ArrayAdapter<String> myarrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, listItems); t.setAdapter(myarrayAdapter); final ListView td = (ListView)findViewById(R.id.cli_lista_detalhe); final ArrayAdapter<String> myarrayAdapter2 = new ArrayAdapter<String>(this, …



6
创建一个新的可绘制颜色
我正在尝试将十六进制值转换为int,以便创建新的可绘制颜色。我不确定是否可以,但是根据文档,应该可以。它明确地要求 公共ColorDrawable(int颜色) 在API级别1中添加。创建具有指定颜色的新ColorDrawable。 参数 color 绘制的颜色。 因此,我的代码无法正常工作,因为我收到一个无效的int:“ FF6666”错误。有任何想法吗? int decode = Integer.decode("FF6666"); ColorDrawable colorDrawable = new ColorDrawable(decode);

7
在Spring MVC中,使用@ResponseBody时如何设置mime类型标头
我有一个Spring MVC Controller,它返回一个JSON字符串,我想将mimetype设置为application / json。我怎样才能做到这一点? @RequestMapping(method=RequestMethod.GET, value="foo/bar") @ResponseBody public String fooBar(){ return myService.getJson(); } 业务对象已经可以作为JSON字符串使用,因此使用MappingJacksonJsonView不是我的解决方案。@ResponseBody是完美的,但如何设置模仿类型?

3
使用Joda日期和时间API解析多种格式
我正在使用Joda解析包含日期/时间的第三方日志文件。日期/时间采用两种不同格式之一,具体取决于我正在解析的日志文件的使用期限。 目前,我有这样的代码: try { return DateTimeFormat.forPattern("yyyy/MM/dd HH:mm:ss").parseDateTime(datePart); } catch (IllegalArgumentException e) { return DateTimeFormat.forPattern("E, MMM dd, yyyy HH:mm").parseDateTime(datePart); } 这有效,但违反了有效Java 2nd Edition中Joshua Bloch的建议(条款57:仅在特殊情况下使用例外)。由于日志文件中错误的日期/时间,这也使得很难确定是否发生IllegalArgumentException。 您能提出一种不会滥用异常的更好的方法吗?

8
什么是抑制异常?
注释(用户SOC上的)回答到关于尾调用优化的问题提到了Java 7中有一个称呼,是因为“加ARM的”的“抑制异常”,新的功能(适用于ARM CPU的支持?)。 在这种情况下,什么是“受抑制的例外”?在其他情况下,“被抑制的异常”将是被捕获然后被忽略的异常(这是一个好主意)。这显然是不同的。

9
Java赋值运算符执行
在Java中,我知道赋值的结果是正确的操作数的值,因此类似语句的结果x == (y = x)为to true。 但是,此代码输出false。 public static void main(String[]args){ String x = "hello"; String y = "goodbye"; System.out.println(x.equals(x = y)); } 为什么是这样?以我的理解,它首先求值(x = y),它分配x的值y,然后返回的值y。然后x.equals(y)进行了评估,应该是true从那时起x,y现在应该共享相同的引用,但是我得到了false。 这是怎么回事


12
如何在Android Marshmallow上使用旧版Apache HTTP客户端?
背景 在Android Marshmallow上,Google已完全删除了对Apache HTTP客户端的支持(链接此处),因为与其他替代品相比,它的性能不佳。 这也可能是导致Android Marshmallow上许多应用程序崩溃的原因。 问题 通过将以下行添加到gradle文件中,Google允许您仍然使用此API,而不是内置API: useLibrary 'org.apache.http.legacy' 所以,这就是我所做的: dependencies { classpath 'com.android.tools.build:gradle:1.3.0' } 和: android { compileSdkVersion 'android-MNC' buildToolsVersion "23.0.0 rc3" useLibrary 'org.apache.http.legacy' defaultConfig { applicationId "com.example.user.androidmtest" minSdkVersion 'MNC' targetSdkVersion 'MNC' versionCode 1 versionName "1.0" } 当我尝试它时,它可以很好地编译(没有错误显示,并且我可以运行概念验证应用程序,因为它没有任何特殊的代码),但是当我尝试使用一些我知道的类时,是旧版API(例如“ HttpClient”类)的一部分,我发现它不允许这样做。 我知道不建议您使用此解决方案,但是我们必须至少暂时准备好该应用程序,直到我们100%应对Android Marshmallow应当更改的所有事情,并且我们不希望出现意外情况崩溃的形式。 这是屏幕截图: 问题 为什么会发生?我使用正确了吗? 编辑:在此报告有关此问题的信息: https://code.google.com/p/android/issues/detail?id=181474

7
在Android上写入外部SD卡的通用方法
在我的应用程序中,我需要在设备存储中存储大量图像。这样的文件往往可以满足设备的存储需求,我希望用户可以选择外部SD卡作为目标文件夹。 我到处都读到Android不允许用户写入外部SD卡,所谓SD卡,是指外部可安装的SD卡,而不是外部存储,但是文件管理器应用程序设法在所有Android版本上写入外部SD。 在不同的API级别(Pre-KitKat,KitKat,Lollipop +)上授予对外部SD卡的读/写访问权限的更好方法是什么? 更新1 我从Doomknight的答案中尝试了方法1,但无济于事:如您所见,在尝试在SD上写入之前,我正在运行时检查权限: HashSet<String> extDirs = getStorageDirectories(); for(String dir: extDirs) { Log.e("SD",dir); File f = new File(new File(dir),"TEST.TXT"); try { if(ActivityCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)==PackageManager.PERMISSION_GRANTED) { f.createNewFile(); } } catch (IOException e) { e.printStackTrace(); } } 但是我收到访问错误,尝试在两种不同的设备上进行:HTC10和Shield K1。 10-22 14:52:57.329 30280-30280/? E/SD: /mnt/media_rw/F38E-14F8 10-22 14:52:57.329 30280-30280/? W/System.err: java.io.IOException: open failed: EACCES …

5
如果我们已经有了Eclipse,为什么我们需要Maven或Ant?
我认为这个问题是Compare to Java IDE的扩展,我们还需要Ant吗? 上面的问题有答案,但是我想知道一个仅在Eclipse上使用Maven或Ant的具体示例。 当我在Eclipse中进行开发时,Eclipse会为我做所有事情,而我只需要单击run按钮。而且,Eclipse可以让您将代码导出到可运行的jar甚至Windows的.exe。 所以我真的不知道为什么我需要Maven或Ant。 而且,如果我确实需要,我应该选择Maven还是Ant?
76 java  maven  ant 

8
所有标准的Android图标资源在哪里?
我刚刚开始编写我的第一个Java / Android应用程序,因此请原谅所有n00b问题。 如何访问标准操作系统图标,例如搜索图标/菜单图标等?它们不在res / drawable文件夹中,我希望在其中找到它们。它们是否可以作为SDK的一部分使用,还是必须单独下载? 编辑 也许您可以进一步帮助我-我收到以下错误(重复出现): [2011-09-08 19:59:47 - TweetTab] C:\Users\Dan\workspace\TweetTab\res\menu\options_menu.xml:4: error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/ic_menu_search'). 但是,图标不是空的,xml如下所示: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/search" android:icon="@drawable/ic_menu_search" android:title="@string/search"/> </menu> 我想念什么吗? 解决了 我更改android:icon="@drawable/ic_menu_search"为android:icon="@android:drawable/ic_menu_search",然后可以找到该图标。
76 java  android 

14
如何模拟要测试的数据库(Java)?
我正在用Java编程,而我的应用程序正在大量使用DB。因此,对我来说重要的是能够轻松测试数据库的使用情况。 什么是DB测试?对我来说,他们应该提供两个简单的要求: 验证SQL语法。 更重要的是,根据给定情况检查数据是否正确选择/更新/插入。 那么,看来我只需要一个DB。 但是实际上,我不喜欢,因为使用数据库进行测试几乎没有困难: “只给自己一个测试数据库,这有多难?” -嗯,在我的工作场所,拥有个人测试数据库几乎是不可能的。您必须使用每个人都可以访问的“公共”数据库。 “这些测试肯定不会很快...”-DB测试往往比常规测试慢。进行缓慢的测试真的不理想。 “此程序应处理任何情况!” -在数据库中尝试模拟每种情况变得有些烦人,甚至是不可能的。对于每种情况,都应进行一定数量的插入/更新查询,这很烦人并且需要时间。 “请稍等,您怎么知道该表中有542行?” -测试的主要原则之一是能够以与测试代码不同的方式测试功能。使用数据库时,通常有一种方法可以执行某项操作,因此测试与核心代码完全相同。 因此,您可以发现测试时我不喜欢数据库(当然,在某些时候,我必须要解决这个问题,但是当我发现大多数错误是通过使用其余的测试方法)。但是我在找什么呢? 我正在寻找一种使用文件系统或虚拟内存来模拟数据库,模拟数据库的方法。我以为可能有一个Java工具/程序包,可让每个测试简单地(使用代码接口)构造一个数据库模拟,模拟表和行,SQL验证以及用于监视其状态的代码接口(而不是使用SQL) )。 您熟悉这种工具吗? 编辑:感谢您的答案!尽管我在寻找工具,但是您也向我提供了有关该问题的提示:)我将花一些时间检查您的报价,所以我现在无法确定您的答案是否令人满意。 无论如何,这是我正在寻找的更好的视图-想象一下一个名为DBMonitor的类,它的功能之一就是查找表中的行数。这是我想如何使用JUnit测试该功能的虚构代码: public class TestDBMonitor extends TestCase { @Override public void setUp() throws Exception { MockConnection connection = new MockConnection(); this.tableName = "table1"; MockTable table = new MockTable(tableName); String columnName = "column1"; ColumnType …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.